//其他没毛病,就清空跑不来
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
struct student
{
char name[10];
struct student *next;
};
//打印
void list(struct student *p)
{
if(p->next ==NULL)
{
printf("没了没了");
}
else if(1)
{
while(1)
{
printf("%s\n", p->name);
if(p->next != NULL)
{
p = p->next ;
}
else
{
break;
}
}
}
}
//创造
struct student *create()
{
struct student *head, *current, *next;
int n = 2;
head = ((struct student *)malloc(sizeof(struct student)));
strcpy(head->name , "小李");
current = head;
while(n--)
{
next = ((struct student *)malloc(sizeof(struct student)));
strcpy(next->name , "皮卡丘");
current->next = next;
current = next;
}
current->next = NULL;
return head;
}
//清空
struct student *cc(struct student *p)
{
struct student *current, *q;
current = p;
while(current->next !=NULL)
{
q = current->next ;
delete(current);
current = q;
}
current->next =NULL;
printf("删除完了");
return p;
}
//主模块
int main()
{
struct student *p;
p = create();
list(p);
cc(p);
list(p);
return 0;
}
你删除最后要更新p,而不是更新current
改为p->next = NULL;