顺序表的基本操作

#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;

}

你可能感兴趣的:(顺序表的基本操作)