本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:
struct ListNode *createlist(){
struct ListNode *head;
struct ListNode *end;
head = (struct ListNode*)malloc(sizeof(struct ListNode));
head -> next = NULL;
head -> data = NULL;
end = head;
int x;
while(~scanf("%d",&x)){
if(x == -1){
break;
}
struct ListNode *t;
t = (struct ListNode*)malloc(sizeof(struct ListNode));
t -> data = x;
t -> next = NULL;
end -> next = t;
end = t;
}
return head;
}
struct ListNode *deleteeven( struct ListNode *head ){
struct ListNode *p;
struct ListNode *q;
p = head;
q = head;
while(p != NULL && p -> next != NULL){
p = p -> next;
if(p -> data % 2 == 0){
q -> next = p -> next;
free(p);
p = q;
}
else{
q = p;
}
}
return head -> next;
}