struct ListNode *readlist(){ //建立无头节点单链表
struct ListNode *L=NULL,*p,*r=L;
int a;
while (1) {
scanf("%d",&a);
if(a==-1)
break;
if(!L){
L=(struct ListNode *)malloc(sizeof(struct ListNode));
L->data=a;
r=L;
}
else{
p=(struct ListNode *)malloc(sizeof(struct ListNode));
p->data=a;
r->next=p;
r=p;
}
r->next=NULL;
}
return L;
}
struct ListNode *deletem( struct ListNode *L, int m ){
struct ListNode *pre=NULL,*p=L;
while(p){ //由于无头节点链表,对于pre指针要特殊处理;
if(p->data==m){
if(!pre){
p=p->next;
L=p;
}
else{
pre->next=p->next;
free(p);
p=pre->next;
}
}
else{
if(!pre){
p=p->next;
pre=L;
}
else{
pre=p;
p=p->next;
}
}
}
return L;
}
// p
//[10]---[10]---[11]----[10]
// L
习题11-8 单链表结点删除 (20分)
最新推荐文章于 2022-10-28 20:21:06 发布