链表插入一个结点

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:40:31
#include "iostream.h"
#define null 0
int n;
struct Stu
{
int num;
char name[20];
struct Stu *next;
};
struct Stu *CreateList()
{
struct Stu *head,*p1,*p2;
head=null;
n=0;
p1=p2=new struct Stu;
cout<<"请输入第1个学生的信息:"<<endl;
cout<<"学号:";cin>>p1->num;
cout<<"姓名:";cin>>p1->name;cout<<endl;
while (p1->num!=0)
{
n+=1;
if(n==1)
head=p1;
else
{
p1=new struct Stu;
cout<<"请输入第"<<n<<"个学生的信息:"<<endl;
cout<<"学号:";cin>>p1->num;
cout<<"姓名:";cin>>p1->name;cout<<endl;
p2->next=p1;
p2=p1;
}
}
n-=1;
p2->next=null;
return head;
}
void PrintList(struct Stu *h)
{
struct Stu *p,

晕,链表结尾干嘛还要判断num的大小啊~~

你输不出是因为你在创建的时候,最后判断条件是num!=0但是这个num==0的节点已经被你加入链表了,所以在后面的新插入中,会显示之前插入的那个num==0的节点,而先插入的节点则又没有显示,只会在你再插入一个节点侯,显示前插入的一个节点

#include "iostream"
using namespace std;
#define null 0
int n;
struct Stu
{
int num;
char name[20];
struct Stu *next;
};
struct Stu *CreateList()
{
struct Stu *head,*p1,*p2;
head=null;
n=0;
p1=p2=new struct Stu;
cout<<"请输入第1个学生的信息:"<<endl;
cout<<"学号:";cin>>p1->num;
cout<<"姓名:";cin>>p1->name;cout<<endl;
while (1)
{
n+=1;
if(n==1)
head=p1;
else
{
p1=new struct Stu;
cout<<"请输入第"<<n<<"个学生的信息:"<<endl;
cout<<"学号:";cin>>p1->num;
if(p1->num==0)break;
cout<<"姓名:";cin>>p1->nam