本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:
struct ListNode {
int data;
ListNode *next;
};
struct ListNode *readlist(){
struct ListNode *head,*p,*pre;
int i;
head=(struct ListNode*)malloc(sizeof(struct ListNode));
head->next=NULL;
pre=head;
scanf("%d",&i);
while(i!=-1){
p=(struct ListNode*)malloc(sizeof(struct ListNode));
p->data=i;
p->next=NULL;
pre->next=p;
pre=p;
scanf("%d",&i);
}
return head;
}
struct ListNode *deletem( struct ListNode *L, int m ){
struct ListNode *p,*q;
p=L;
while(p->next!=NULL){
if(p->next->data==m){
q=p->next;
p->next=q->next;
free(q);
}else
p=p->next;
}
return L->next;
}