



struct ListNode *createlist(){
struct ListNode *head,*p,*q;
head = NULL;
q = NULL;
int n;
while(1){
scanf("%d",&n);
if(n==(-1)){
break;
}
else{
p = (struct ListNode *)malloc(sizeof(struct ListNode));
p->data = n;
if(head==NULL){
head = p;
}
else{
q->next = p;
}
q = p;
}
}
if(q!=NULL){
q->next = NULL;
}
return head;
}
struct ListNode *deleteeven( struct ListNode *head ){
struct ListNode *head0,*p,*q,*head1;
head1 = NULL;
int a[1000],count=0,i;
if(head==NULL){
return head;
}
head0 = head;
q = NULL;
while(head0!=NULL){
if(head0->data%2==1){
a[count] = head0->data;
count++;
}
head0 = head0->next;
}
a[count] = '\0';
for(i=0;i<count;i++){
p = (struct ListNode *)malloc(sizeof(struct ListNode));
p->data = a[i];
if(head1==NULL){
head1 = p;
}
else{
q->next = p;
}
q = p;
}
if(q!=NULL){
q->next = NULL;
}
return head1;
}
第一个创建链表的函数没什么好说的
第二个删除结点中的偶数数据,我这里使用的方法依旧是链表+数组相结合(披着链表的皮的数组),首先先对链表进行遍历,将奇数的数据存到数组里面,然后再创建新的链表,将数组里面的数据一次存放到新链表里面,最后返回新链表的首地址
属于是投机取巧的方法了,希望咱老师看到了不要骂我,呜呜呜
本文介绍了如何用链表结合数组的方法创建链表,并实现删除链表中所有偶数值节点的功能。通过遍历原链表筛选奇数值,再创建新链表存放这些值。
1769





