#include <iostream>
using namespace std;
#define InitSpace 100
#define IncSpace 10
typedef int datatype;
//定义结构体
typedef struct seqlist{
datatype *elem;
int listlength;
int length;
}sequence_list;
//初始化结构体
void init(sequence_list &slt)
{
slt.elem=(datatype*)malloc(InitSpace*sizeof(datatype));
slt.length=0;
slt.listlength=InitSpace;
}
//在第i个位置插入元素e
int insertElem(sequence_list &slt,datatype e,int i)
{
if(i<0||i>slt.length)
{
cout<<"输入位置不合法"<<endl;
return 0;
}
if(slt.length>=slt.listlength)
{
datatype *newspace;
newspace=(datatype*)realloc(slt.elem,(InitSpace+IncSpace)*sizeof(datatype));
if(!newspace)
{
slt.elem=newspace;
}
}
for(int j=slt.length;j>i;j--)
{
slt.elem[j]=slt.elem[j-1];
}
slt.elem[i]=e;
slt.length+=1;
return 1;
}
//出去第i个位置的元素
int rmovElem(sequence_list &slt,int i){
if(i<0||i>=slt.length)
{
cout<<"输入范围不合法"<<endl;
return 0;
}
for(int j=i+1;j<slt.length;j++)
{
slt.elem[j-1]=slt.elem[j];
}
slt.length-=1;
return 1;
}
//遍历输出顺序表元素
void printElem(sequence_list &slt)
{
for(int i=0;i<slt.length;i++)
{
cout<<slt.elem[i]<<endl;
}
}
//返回指定位置的元素
datatype getElem(sequence_list &slt,int i)
{
return slt.elem[i];
}
//判断顺序表是否为空
int isEmpty(sequence_list &slt)
{
return slt.length==0?1:0;
}
//往顺序表最后插入一个指定元素
int addElemToLast(sequence_list &slt,datatype x)
{
if(slt.length>=slt.listlength){
datatype *newspace;
newspace=(datatype*)realloc(slt.elem,(InitSpace+IncSpace)*sizeof(datatype));
if(!newspace)
{
cout<<"存储空间分配失败"<<endl;
return 0;
}
slt.elem=newspace;
slt.listlength+=IncSpace;
}
slt.elem[slt.length]=x;
slt.length=slt.length+1;
}
void main()
{
sequence_list slt;
init(slt);
insertElem(slt,0,0);
addElemToLast(slt,1);
addElemToLast(slt,2);
insertElem(slt,3,2);
rmovElem(slt,4);
//insert_sequence_list(slt,1);
//printElem(slt);
//insertElem(slt,1,0);
printElem(slt);
getElem(slt,2);
//cout<<"hello world"<<endl;
system("pause");
}