关于动态创建链表的问题
#include <iostream>
using namespace std;
struct table
{
int num;
table *next;
};
int main()
{
void print(table*);
table *Creat();
print(Creat());
return 0;
}
table *Creat()
{
table *head,*p;
head=new table;
p=head;
while(1)
{
cout<<"输入序号:";
cin>>p->num;
if(p->num==0)
{
p->next=NULL;
return head;
}
p=p->next;
p=new table;
}
}
void print(table *head)
{
table *p=head;
int i=1;
do
{
cout<<i++<<"号结点:"<<p->num<<endl;
p=p->next;
}while(p!=NULL);
}
编译通过,运行后弹出错误提示,说XX内存不能读。
[解决办法]
略微改了下,楼主对照看下~~
- C/C++ code
#include <iostream>using namespace std;struct table{int num;table *next;};int main(){ void print(table*); table *Creat(); print(Creat()); return 0; //return前注意delete,释放内存}table *Creat(){ table *head,*p; head=new table; p=head; while(1) { cout<<"输入序号:"; cin>>p->num; if(p->num==0) { p->next=NULL; break; } p->next = new table; //这里略微改了下 p = p->next; p->next = NULL; } return head;}void print(table *head){ table *p=head; int i=1; do { cout<<i++<<"号结点:"<<p->num<<endl; p=p->next; }while(p); //这里用do while循环不太好,防止空链表}