实验11-2-4删除单链表偶数结点
struct ListNode *createlist(){
struct ListNode*head=NULL,*xp,*yp;
yp=head;
int number;
while(1){
scanf("%d",&number);
if(number==-1) break;
xp=(struct ListNode*)malloc(sizeof(struct ListNode));
xp->data=number;
if(head==NULL) head=xp;
else yp->next=xp;
xp->next=NULL;
yp=xp;
}
return head;
}
struct ListNode *deleteeven( struct ListNode *head ){
struct ListNode * p,*q;
while (head!=NULL&&head->data% 2 == 0) {
q= head;
head = head->next;
free(q);
}
if(head==NULL) return 0; //以上部分判断是否全部是偶数,
p = head;
while (p->next!=NULL) {
if (p->next->data %2 == 0) {
q = p->next;
p->next = p->next->next;
free(q);
}
else {
p = p->next;
}
}
return head;
}