请教,C++单链表实现问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:26:55
下面是一个程序
#include"iostream.h"
struct Node
{
int Data;
Node*next;
};
class list
{
Node*head;
public:
list(){head=NULL;}
void insertlist(int bData);
void outputlist();
Node*gethead(){return head;} //不明白
};

void list::insertlist(int bData) //设aData是结点a中的数据,bData是结点b中的数据
{
Node*p,*s; //p指向结点a,q指向结点a_k,s指向结点b
s=(Node*)new(Node); //动态分配一个新结点
s->Data=bData; //设b为此结点
p=head;
if(head==NULL) //若是空表,使b作为第一个结点
{
head=s;
s->next=NULL;
}
else
{
p->next=s;
s->next=NULL;
}
}
void list::outputlist()
{
Node*current=head;
while(current!=NULL)
{
cout<<current->Data<<" ";
current=current->next;
}
cout<<endl;
}
void main()
{
list A;
int Data[10]={25,41,16,98,5,67,9,55,1,121};

改成这样就可以了
#include"iostream.h"
struct Node
{
int Data;
Node*next;
};
class list
{
Node*head;
public:
list(){head=NULL;}
void insertlist(int bData);
void outputlist();
Node*gethead(){return head;} //不明白
};

void list::insertlist(int bData) //设aData是结点a中的数据,bData是结点b中的数据
{
Node*p,*s; //p指向结点a,q指向结点a_k,s指向结点b
s=(Node*)new(Node); //动态分配一个新结点
s->Data=bData; //设b为此结点
p=head;
if(head==NULL) //若是空表,使b作为第一个结点
{
head=s;
s->next=NULL;
}
else
{
while(1)//你以前的是始终将数据放到了第二个链上了。应该是每次都去寻找,//当下一个为空的时候再将数据挂上。
{
if(p->next!=NULL)
p=p->next;
else break;
}
p->next=s;
s->next=NULL;
}
}
void list::outputlist()
{
Node*current=head;
while(current!=NULL)
{
cout<<current->Data<<" ";
current=c