#include"SqList.h"
#include"pch.h"
#include
constexpr auto MAXSIZE = 100;
typedef struct
{
int *elem;
int length;
}SqList;
Status InLIst(SqList *L)
{//构造一个空的顺序表
L->elem= new int[MAXSIZE];
if (!L->elem) exit(OVERFLOW);
L->length = 0;
return OK;
}
void DestroyList(SqList *L)
{//销毁一个顺序表
if (L->elem) delete[]L->elem;
}
void ClearList(SqList *L)
{//清空一个顺序表
L->length = 0;
}
int GetLength(SqList *L)
{//求顺序表的长度
return (L->length);
}
int IsEmpty(SqList *L)
{//判断顺序表是否为空
if (L->length==0)
{
return 1;
}
else
{
return 0;
}
}
int GetElem(SqList L,int i, int *e)
{//求取顺序表中某个数据元素的内容
if (i<1||i>L.length)
return ERROR;//判断i值是否合理,若不合理,则返回ERROR
*e = L.elem[i - 1];
return OK;
}
int LocateElem(SqList L ,int e)
{//查找成功返回序号,查找不成功返回0
for (int i = 0; i < L.length; i++)
if (L.elem[i] == e)
return i + 1;
return 0;
}
Status ListInsert_Sq(SqList *L, int i, int e)
{//插在第i个节点前
if (i<1 || i>L->length + 1)//;i值不合法
return ERROR;
if (L->length == MAXSIZE)//当前内存已满
return ERROR;
for (int j = L->length - 1; j >= i - 1; j--)
L->elem[j + 1] = L->elem[j];//插入元素及以后的位置后移
L->elem[i - 1] = e;//新元素e放入第i个位置
++L->length;//表长加1
return OK;
}
Status ListDelete_Sq(SqList *L, int i)
{//删除第i个节点
if (i<1 || i>L->length)//i值不合法
return ERROR;
for (int j = 1; j <= L->length-1; j++)
L->elem[j - 1] = L->elem[j];//被删除元素之后的元素向前移
--L->length;//表长减1
return OK;
}