PTA C语言 浙江大学 函数题 6-37 删除单链表偶数节点

PTA C语言 浙江大学 函数题 6-37 删除单链表偶数节点_第1张图片

 PTA C语言 浙江大学 函数题 6-37 删除单链表偶数节点_第2张图片

 PTA C语言 浙江大学 函数题 6-37 删除单链表偶数节点_第3张图片

 PTA C语言 浙江大学 函数题 6-37 删除单链表偶数节点_第4张图片

 

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         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;
}

第一个创建链表的函数没什么好说的

第二个删除结点中的偶数数据,我这里使用的方法依旧是链表+数组相结合(披着链表的皮的数组),首先先对链表进行遍历,将奇数的数据存到数组里面,然后再创建新的链表,将数组里面的数据一次存放到新链表里面,最后返回新链表的首地址

属于是投机取巧的方法了,希望咱老师看到了不要骂我,呜呜呜

你可能感兴趣的:(c语言,开发语言,链表,数据结构)