#include<iostream>
using namespace std;
struct Node
{
int nValue;
Node *pNext;
};
void CreateList(Node **pHead,Node **pEnd,int n)
{
int nValue;
for(int i=0;i<n;i++)
{
cin>>nValue;
Node *temp=(Node*)malloc(sizeof(Node));
temp->nValue=nValue;
temp->pNext=NULL;
if((*pHead)==NULL)
{
(*pHead)=temp;
(*pEnd)=temp;
}
else
{
(*pEnd)->pNext=temp;
(*pEnd)=temp;
}
}
}
void AddnValue(Node **pHead,Node **pEnd,int n,int nInsertValue)//在链表中第几个位置添加元素
{
Node *temp=(Node*)malloc(sizeof(Node));
temp->nValue=nInsertValue;
temp->pNext=NULL;
int i=1;
if((*pHead)==NULL)
{
(*pHead)=temp;
return;
}
if(1==n)
{
temp->pNext=(*pHead);
(*pHead)=temp;
return ;
}
Node *zou=(*pHead);
while(zou->pNext!=NULL)
{
i++;
if(i==n)
{
temp->pNext=zou->pNext;
zou->pNext=temp;
return ;
}
zou=zou->pNext;
}
zou->pNext=temp;
}
void DeletenValue(Node **pHead,Node **pEnd,int n)//删除第几个位置的元素
{
if((*pHead)==NULL||(*pEnd)==NULL)
{
return ;
}
int i=1;
Node *pDel;
if(1==n)
{
pDel=(*pHead);
(*pHead)=(*pHead)->pNext;
free(pDel);
return ;
}
Node *zou=(*pHead);
while(zou->pNext!=NULL)
{
i++;
if(i==n)
{
pDel=zou->pNext;
zou->pNext=zou->pNext->pNext;
free(pDel);
return ;
}
zou=zou->pNext;
}
}
void ShowList(Node *pHead,Node *pEnd)
{
if(pHead==NULL||pEnd==NULL)
{
return ;
}
Node *temp=pHead;
while(temp->pNext)
{
cout<<temp->nValue<<" ";
temp=temp->pNext;
}
cout<<temp->nValue<<endl;
}
void DeleteList(Node **pHead,Node **pEnd)
{
Node *temp=(*pHead);
while(temp)
{
Node *pDel=temp;
temp=temp->pNext;
free(pDel);
pDel=NULL;
}
}
int main()
{
int n;
int n_insert;
int nInsertValue;
int n_delete;
while(cin>>n)
{
Node *pHead=NULL;
Node *pEnd=NULL;
CreateList(&pHead,&pEnd,n);
ShowList(pHead,pEnd);
cin>>n_insert>>nInsertValue;
AddnValue(&pHead,&pEnd,n_insert,nInsertValue);
ShowList(pHead,pEnd);
cin>>n_delete;//1
DeletenValue(&pHead,&pEnd,n_delete);
ShowList(pHead,pEnd);
cin>>n_delete;//2
DeletenValue(&pHead,&pEnd,n_delete);
ShowList(pHead,pEnd);
cin>>n_delete;//3
DeletenValue(&pHead,&pEnd,n_delete);
ShowList(pHead,pEnd);
DeleteList(&pHead,&pEnd);
}
return 0;
}