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

查看25道真题和解析