题解 | #牛牛的双链表求和#

牛牛的双链表求和

https://www.nowcoder.com/practice/efb8a1fe3d1f439691e326326f8f8c95

#include <malloc.h>
#include <stdio.h>

typedef struct Node{
    int num;
    struct Node* next;
}LinkNode ;

LinkNode* Init(){
    LinkNode* p;
    p=(LinkNode* )malloc(sizeof(LinkNode));
    p->next=NULL;
    return p;
}

LinkNode* CreateList(int* args, int num){
    LinkNode *p,*head,*q;
    head=Init();
    q=head;
    for(int i=0;i<num;i++){
        p=Init();
        p->num=*(args+i);
        q->next=p;
        q=p;
    }
    return head;
}

LinkNode* ListSum(LinkNode* AList, LinkNode* BList){
    LinkNode *p,*q;
    p=AList->next;
    q=BList->next;
    while (p!=NULL&&q!=NULL) {
        p->num+=q->num;
        p=p->next;
        q=q->next;
    }
    return AList;
}

void DeleteList(LinkNode* Head){
    LinkNode* p=Head->next;
    while(p!=NULL){
        Head->next=p->next;
        free(p);
        p=Head->next;
    }
    free(Head);
}


int main() {
    int num;
    LinkNode* AHead, *BHead, *ptr;
    scanf("%d",&num);
    int ListA[num],ListB[num];
    for (int i=0; i<num; i++) {
        scanf("%d",&ListA[i]);
    }
    for (int i=0; i<num; i++) {
        scanf("%d",&ListB[i]);
    }
    AHead=CreateList(ListA, num);
    BHead=CreateList(ListB, num);

    AHead=ListSum(AHead, BHead);

    ptr=AHead->next;
    while (ptr!=NULL) {
        printf("%d ",ptr->num);
        ptr=ptr->next;
    }
    DeleteList(AHead);
    DeleteList(BHead);
    return 0;
}

全部评论

相关推荐

阿里巴巴各部门年终奖开奖了,有人拿到了220w
真烦好烦真烦:拿命换钱呢,公司给你220万,肯定是因为你对公司的贡献大于220万,想想要多厉害多累才能达到
投递阿里巴巴集团等公司10个岗位 >
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务