#include"SqList.h"
#include"pch.h"
#include<iostream>
constexpr auto MAXSIZE = 100;
typedef struct
{
int *elem;
int length;
}SqList;
Status InLIst(SqList *L)
{//構(gòu)造一個空的順序表
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)
{//求取順序表中某個數(shù)據(jù)元素的內(nèi)容
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個節(jié)點前
if (i<1 || i>L->length + 1)//;i值不合法
return ERROR;
if (L->length == MAXSIZE)//當前內(nèi)存已滿
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個節(jié)點
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;
}