#include<iostream>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int ElemType;
using namespace std;
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LNode,*LinkList;
int InitList(LinkList &L)
{
L=new LNode;//或L=(LinkList)malloc(sizeod(LNode));
L->next=NULL;
return OK;
}
int LocateList(LinkList L,ElemType e)
{
LinkList p;
int i=1;
p=L->next;
while(p&&p->data!=e){
p=p->next;
i++;
}
if(p)return i;
else return 0;//没找到
}
int DeleteList(LinkList &L,int i)//删除第i个结点
{
int n;
LinkList p,q;
p=L->next;
for(n=1;n<i-1;n++)
{
p=p->next;
}
q=p->next;
if(!q)return ERROR;//i大于表长
p->next=q->next;
delete q;
return OK;
}
int CreateList(LinkList &L,int a)//尾插法
{
int i;
LinkList p,r;
p=new LNode;
p->data=a;
p->next=NULL;
L->next=p;
r=p;
for(i=1;i<=10;i++)
{
if(i!=L->next->data){
p=new LNode;
p->data=i;
p->next=NULL;
r->next=p;
r=p;
}
}
return OK;
}
int ChangeList(LinkList &L,int a)
{
LinkList p;
p=new LNode;
p->data=a;
p->next=L->next;
L->next=p;
return OK;
}
void PrintList(LinkList L)
{
LinkList p;
p=L->next;
while(p){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
int main()
{
int i,n;
cin>>n;
int Ar[n];
for(i=0;i<n;i++){
cin>>Ar[i];
}
LinkList L1;
InitList(L1);
CreateList(L1,Ar[0]);
PrintList(L1);
for(i=1;i<n;i++){
DeleteList(L1,LocateList(L1,Ar[i]));
ChangeList(L1,Ar[i]);
PrintList(L1);
}
}