#define MaxSize 100//定义线性表的最大长度
typedef struct SqList{
ElemType data[MaxSize];//顺序表的元素
int length;//顺序表的长度
}SqList;//顺序表的类型定义 (静态分配)
//初始化
void InitList(SqList &L)
{
L.length=0;
}
int main()
{
SqList L;
InitList(L);
return 0;
}
//顺序表的插入操作
bool ListInsert(SqList &L,int i,int e)
{
if(i<1||i<L.length+1)//判断i的范围是否有效
{
return false;
}
if(L.length>=MaxSize)//当存储空间已满,不能插入
{
return false;
}
for(int j = L.length;j>=i;j--)//将第i个元素及以后的元素后移
{
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;//在位置i处放入e
L.length++;//线性表长度加1
return true;
}
//顺序表的删除操作
bool ListDelete(SqList &L,int i,int &e)
{
if(i<1||i>L.length+1)
{
return false;
}
e=L.data[i-1];//将被删除的元素赋值给e
for(int j = i;j<L.length;j++)//将第i个位置后的元素前移
{
L.data[j-1]=L.data[j];
}
L.length--;//线性表长度减1
return true;
}
//按值查找
int LocateElem(SqList L,int e)
{
for(int i = 0;i<L.length;i++)
{
if(L.data[i]==e)
{
return i+1;//下标为i的元素值等于e,返回其位序i+1
}
}
return 0;//退出循环,说明查找失败
}
//动态分配
#define InitSize 100
typedef struct{
ElemType *data;//指示动态分配数组的指针
int length;
int MaxSize;//数组的最大容量和当前长度
}SeqList; //动态分配数组顺序表的类型定义
void InitList(SeqList &L)
{
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);
L.length=0;
L.MaxSize=InitSize;
}
//顺序表扩容
void IncreaseSize(SeqList &L,int len)
{
ElemType* p = L.data;
L.data=(ElemType*)malloc((InitSize+len)*sizeof(ElemType));
for(int i = 0;i<L.length;i++)
{
L.data[i] = p[i];
}
L.MaxSize=L.MaxSize+len;
free(p);
}
int main()
{
SeqList L;
InitList(L);
IncreaseSize(L,5);
return 0;
}