题解 | #牛牛的双链表求和#
牛牛的双链表求和
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; }