想实现两个东西:1.求链表长度 2.求完链表长度就将链表置空
代码如下:
int Length(List L){//求链表长度
int i=0;
while(L){
L=L->Next;
i++;
}
L->Next=NULL;
return i;
}
问题出在:如果去掉函数里面 L->Next=NULL;这个,这个函数就能正常求出表长。但是加了 L->Next=NULL;这个的话,崩溃了。不懂为什么会这样。
如果想要同时实现我第一行说的,就要用下面这段代码:
int Length(List L){
List p=L;
int i=0;
while(p){
p=p->Next;
i++;
}
L->Next=NULL;
return i;
}
再加一个变量来指向表头。
为什么第一段代码不可以同时实现我第一行说的那两个呢?