#include <stdio.h> #include<stdlib.h> //单链表 typedef struct DListNode { struct DListNode* next; int data; }LN; //增加节点 LN* BuyNode(int x) { LN* newnode = (LN*)malloc(sizeof(LN)); newnode->next = NULL; newnode->data = x; return newnode; } //初始化 LN* InitNode() { LN* phead=BuyNode(0); return phead; } //尾插 void NodePushBack(LN* phead,int x) { LN* newnode=BuyNode(x); LN* cur=phead; //如果没有节点直接在头节点后面插入 if(phead->next==NULL) { phead->next=newnode; return; //插入后直接退出 } else //如果头节点后面有节点就要找到最后一个节点 { while(cur->next != NULL) { cur=cur->next; } } cur->next=newnode; //在最后一个节点后面插入 } //打印 void PrintArray(LN* plist1,LN* plist2) { LN* cur1=plist1->next;//不打印头节点 LN* cur2=plist2->next;//不打印头节点 while(cur1 != NULL && cur2 != NULL) { printf("%d ",cur1->data+cur2->data); cur1=cur1->next; cur2=cur2->next; } } int main() { int n; scanf("%d ",&n); //对a和b数组分别写入 int* sum=(int*)malloc(sizeof(int)*n); int* num=(int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++) { scanf("%d ",&sum[i]); } for(int i=0;i<n;i++) { scanf("%d ",&num[i]); } //对a和b两个链表分别设置个头节点 LN* plist1=InitNode(); //a LN* plist2=InitNode(); //b //对a和b两个链表分别录入 for(int i=0;i<n;i++) { NodePushBack(plist1,sum[i]); } for(int i=0;i<n;i++) { NodePushBack(plist2,num[i]); } //打印 PrintArray(plist1,plist2); return 0; }