|
song4 说的对。
我先前还没看到,好失败
这里
node m1={{1,2,3,4,5},"小蜜蜂",1};
q=new node;
q=&m1;
q->next=first;
first=q;
m1的地址复值给q,然后又把这个局部变量的地址给first这是错误的,函数结束后,这个栈中的数据都会被销毁,那些曾经存放过的东西都不存在,你可以这样改下:
void LinkList::Setup()
{
node *q,*p;
node m1={{1,2,3,4,5},"小蜜蜂",1,NULL};
q=new node;
strcpy(q->name,m1.name);
q->next=m1.next;
q->next=first;
first=q;
node m2={{5,4,3,2,1},"遇见",2,NULL};
p=new node;
strcpy(p->name,m2.name);
p->next=m2.next;
p->next=q->next;
q->next=p;
n+=2;
}
这样只是复值,而不是取地址,这样就不会出现上述错误 |
|