#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#define Maxsize 100
#define OVERFLOW -2
#define ERROR -1
#define OK 1
#define LISTINCREMENT 100
typedef int datatype;
typedef struct
{datatype *data;
int length;
int listsize;
}sqlist;
int initlist(sqlist &L) //链表的初始化
{
L.data=(datatype*)malloc(Maxsize*sizeof(datatype));
if(!L.data) exit(OVERFLOW);
L.length=0;
L.listsize=Maxsize;
return OK;
}
int listinsert(sqlist &L,int i,datatype e) //链表的插入函数
{
datatype *newbase,*p,*q;
if(i<1||i>L.length+1)
return ERROR;
if(L.length>=L.listsize)
{
newbase=(datatype*)realloc(L.data,(L.listsize+LISTINCREMENT)*sizeof(datatype));
if(!newbase) exit(OVERFLOW);
L.data=newbase;
L.listsize+=LISTINCREMENT;
}
q=L.data+i-1;
for(p=L.data+L.length-1;p>=q;p--)
*(p+1)=*p;
*q=e;
L.length++;
return OK;}
void creatlist(sqlist &L,int m) //创建链表函数
{
int i;
datatype e;
for(i=1;i<=m;i++)
{
cin>>e;
listinsert(L,i,e);
}
}
void printlist(sqlist L) //链表的输出函数
{
int i;
for(i=0;i<L.length ;i++)
cout<<*(L.data+i)<<" ";
cout<<endl;
}
int main()
{
int m;
sqlist L;
scanf("%d",&m);
initlist(L);
creatlist(L,m);
printlist(L);
return 0;
}