求助大神

二哈在笑 2018-10-10 07:12:01
#include<iostream>
using namespace std;

struct person
{
char Name[20];
struct person *Next;
};

struct person *creat();
void out(struct person *Head);

int main()
{
struct person *Head;

cout<<"创建一个链表"<<endl;
Head=creat();
out(Head);
return 0;
}

struct person *creat()
{
struct person *Head=NULL;
struct person *End,*New;
New=End=new struct person[1];
char ch;
int i;

cout<<"是否开始输入(y/n)?"<<endl;
cin>>ch;

if(ch=='Y' || ch=='y')
{
for(i=1;ch=='y' || ch=='Y';i++)
{
cout<<"姓名"<<endl;
cin>>New->Name;

if(i=1)
{
New->Next=Head;
Head=New;
End=New;
}
else
{
New->Next=NULL;
End->Next=New;
End=New;
}
New=new struct person[1];

cout<<"是否继续输入(y/n)?"<<endl;
cin>>ch;
}
delete []New;
}
return Head;
}

void out(struct person *Head)
{
struct person *pb=Head;

for(;pb!=NULL;pb=pb->Next)
cout<<"姓名:"<<pb->Name<<endl;
}

这是代码,求解为什么链表输出顺序是倒的;
比如,构造一个链表1->2->3;
输出的结果却是3->2->1。
...全文
310 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-10-17
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
自信男孩 2018-10-17
  • 打赏
  • 举报
回复
if (i = 1)

它的原因,这是一个赋值语句,不是判断语句,导致不会执行else

みしつかん 2018-10-16
  • 打赏
  • 举报
回复
//问题出在你if的判断里面,还要你的For循环里也有点小问题,结构体的定义也有点问题,具体更正代码如下,已编译可正常输出。

#include<iostream>
using namespace std;

struct person
{
char Name[20];
struct person *Next;
};

struct person *creat();
void out(struct person *Head);

int main()
{
struct person *Head;

cout << "创建一个链表" << endl;
Head = creat();
out(Head);
getchar();
getchar();
//system("pause");
delete[]Head;
return 0;
}

struct person *creat()
{
struct person *Head = NULL;
struct person *End = NULL;
struct person *New = NULL;
New = End = new struct person[1];
char ch;
int i;

cout << "是否开始输入(y/n)?" << endl;
cin >> ch;

if (ch == 'Y' || ch == 'y')
{
for(int i = 1; ch == 'y' || ch == 'Y';i++)
{
cout << "姓名" << endl;
cin >> New->Name;

if (i == 1)
{
New->Next = Head;
Head = New;
End = New;
}
else
{
New->Next = NULL;
End->Next = New;
End = New;
}
New = new struct person[i+1];

cout << "是否继续输入(y/n)?" << endl;
cin >> ch;
}
//delete[]New;
}
return Head;
}

void out(struct person *Head)
{
struct person *pb = Head;

for (; pb != NULL; pb = pb->Next)
cout << "姓名:" << pb->Name << endl;
}
qq_33601473 2018-10-10
  • 打赏
  • 举报
回复
再写个栈就行

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧