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