#include <iostream>
using namespace std;
#define INIT_SIZE 10
#define ADD_SIZE 3
typedef double ElemType;
typedef struct
{
ElemType *data; //顺序线性表的首地址
int length; //存放元素个数
int size; //总空间个数
}SqList;
//完成顺序线性表的初始化
//如果成功,返回1,否则返回0
int Init_SqList(SqList &L)
{
L.data = (ElemType *)malloc(INIT_SIZE*sizeof(ElemType));
if(L.data == NULL) //if(!L.data)
{
//也表示结束
return 0; //返回0表示初始化空间失败
}
L.length = 0; //记得初始化元素个数为0
L.size = INIT_SIZE;
return 1;
}
//在顺序线性表L的第i位置插入一个元素e
//插入成功,返回1,否则0
int Insert_SqList(SqList &L,int i,ElemType e)
{
int k;
ElemType *newbase;
//如果位置不合法
if(i<1 || i>L.length+1)
{
return 0;
}
//是否放满
if(L.length>=L.size) //表示放满了
{
newbase=(ElemType *)realloc(L.data,(L.size+ADD_SIZE)*sizeof(ElemType));
if(!newbase)
return 0;
L.size += ADD_SIZE;
}
//到此,位置和空间都考虑了
k = L.length; //从最后一个位置开始移动
while(k>=i)
{
L.data[k] = L.data[k-1];
k--; //没有这步,定死循环
}
//终于移完了
L.data[i-1] = e;
L.length++;
return 1;
}
//输出顺序线性表的所有元素值
void Print_SqList(SqList L)
{
int i;
for(i=0;i<L.length;i++)
cout<<L.data[i]<<' ';
cout<<endl;
}
int main()
{
freopen("1.in","r",stdin);
int n,i;
double e;
SqList L; //定义一个变量L,L就是顺序线性表
//应该完成顺序线性表的初始化
if(Init_SqList(L)==0)
return 0;
cin>>n;
while(n--)
{
cin>>i>>e;
Insert_SqList(L,i,e);
}
Print_SqList(L);
return 0;
}