線性表的基本操作
- 創建
typedef struct
{
ElemType data[MAXSIZE];
int length;
}Sqlist;
- 初始化程序
Status initList(Sqlist L)
{
L.length = 0;
return OK;
}
- 清空線性表
Status ClearList(Sqlist *L)
{
L->length = 0;
return OK;
}
- 判斷線性表是否為空
Status ListEmpty(Sqlist L)
{
if (L.length == 0)
return FLASE;
else
return TURE;
}
- 根據位序查找資料元素
Status GetElem(Sqlist L, int i, ElemType *e)
{
if (L.length == 0 || i<0 || i>L.length)
return ERROR;
*e = L.data[i - 1];
return OK;
}
- 查找元素e的位序
//初始化條件 回傳L中第一個與e滿足關系的資料元素的位序 若這樣的資料元素不存在,回傳0
int LocateElem(Sqlist L, ElemType e)
{
int i;
if (L.length)
{
for (i = 0; i < L.length; i++)
if (L.data[i] == e)
return i + 1;
}
return 0;
}
- 線性表長度
int ListLength(Sqlist L)
{
return L.length;
}
- 插入和洗掉資料
//在L中第i個位置之前插入新的資料元素e,L中的長度加1
Status ListInsert(Sqlist *L, int i, ElemType e)
{
int K;
if (L->length == MAXSIZE || i<1 || i>L->length + 1)
return ERROR;
else
{
if (i <= L->length)
{
for (K = L->length; K >= i; K--)
L->data[K] = L->data[K - 1];
}
L->data[i - 1] = e;
L->length++;
return OK;
}
}
//操作結果:洗掉L的第i個元素,并用e回傳其值,L的長度減1
Status ListDelete(Sqlist *L, int i, ElemType *e)
{
int K;
if (L->length == MAXSIZE || i<1 || i>L->length)
{
return ERROR;
*e = L->data[i - 1];
if (i < L->length)
for (K = i - 1; K < L->length - 1; K++)
L->data[K] = L->data[K + 1];
L->length--;
}
return OK;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267493.html
標籤:其他
