我试图通过使用用户定义的显示函数调用用户定义的函数insert and display来创建并插入到具有2个节点的单链表中。预期产出:-5 10我得到的输出是:=5请帮忙。
#include<iostream>
#include<stdlib.h>
using namespace std;
struct list
{
int data;
struct list *link;
};
struct list *start=NULL;
int insert(int a)
{
struct list *n,*t,*p;
n= new list;
n->data=a;
n->link=NULL;
if(start==NULL)
{
start=n;
}
else if(start!=NULL)
{
t=start;
while(t->link!=NULL)
{
t=t->link;
}
t->link=n;
}
return(0);
}
int Display(struct list *p)
{
while(p->link!=NULL)
{
cout<<p->data;
p=p->link;
}
return(0);
}
int main()
{
insert(5);
insert(10);
Display(start);
return(0);
}
在Display
函数中,用while(p != NULL)
替换while(p->link!=NULL)
。否则,您不会打印最后一个节点的数据。
订单很重要。首先打印节点数据,然后遍历链接。当你在最后一个节点时,你的代码不会打印数据,因为该节点没有链接,这是不正确的。
int Display(struct list *p)
{
cout<<p->data;
while(p->link!=NULL)
{
p=p->link;
cout<<p->data;
}
return(0);
}