#define maxlen 10
#define ERROR 0
#define OK 1
int LASTERROR=0;
typedef int ElemType;
typedef struct{
int realen;
ElemType elem[maxlen];
}L;
void InitList(L *list); //初始化线性表
void DestroyList(L *list); //销毁线性表
int ListEmpty(L *list); //判断线性表是否为空
int ListFull(L *list); //判断线性表是否已满
int ListLength(L *list); //求线性表的长度
ElemType GetElem(L *list, int idx); //获取线性表L第idx个位置的元素
int LocateElem(L *list, ElemType e); //获取元素e在线性表L中所在的位置
ElemType PriorElem(L *list,int cur); //求元素cur_e的直接前驱
ElemType NextElem(L *list, int cur); //求元素cur_e的直接后继
int ListInsert(L *list, int idx, ElemType e); //在线性表L的第i个位置插入元素e
int ListDelete(L *list, int idx); //删除线性表L第i个位置的元素
void InitList(L *list)
{
list->realen=0;
}
void DestroyList(L *list)
{
list->realen=0;
}
int ListEmpty(L *list)
{
if(list->realen==0)
{
return OK;
}
else
{
return ERROR;
}
}
int ListFull(L *list)
{
if(list->realen==maxlen)
{
return OK;
}
else
{
return ERROR;
}
}
int ListLength(L*list)
{
return list->realen;
}
ElemType GetElem(L *list,int idx)
{
if(idx>0&&idx<=list->realen)
{
return list->elem[idx];
}
else
{
return ERROR;
}
}
int LocateElem(L *list,ElemType e)
{
int i;
for(i=0;i<list->elem[maxlen];i++)
{
if(list->elem[i]==e)
{
return i;
}
else
{
return ERROR;
}
}
}
ElemType PrioiElem(L *list,int cur)
{
if(cur>1&&cur<=list->elem[maxlen])
{
return list->elem[cur-1];
}
else
{
return ERROR;
}
}
ElemType NextElem(L *list,int cur)
{
if(cur>0&&cur<list->elem[maxlen])
{
return list->elem[cur+1];
}
else
{
return ERROR;
}
}
int ListInsert(L *list,int idx,ElemType e)
{
int i;
if(idx>0&&idx<=list->elem[maxlen]&&!ListFull(list))
{
for(i=list->realen;i>idx;i--)//从后往前挪
{
list->elem[i+1]=list->elem[i];
}
list->elem[idx]=e;
list->realen++;
}
else
{
return ERROR;
}
}
int ListDelete(L *list,int idx)
{
int i;
if(idx>0&&idx<=list->elem[maxlen]&&!ListEmpty(list))
{
for(i=idx;i<=list->realen;i++)
{
list->elem[i]=list->elem[i+1];
}
list->realen--;
}
else
{
return ERROR;
}
}
顺序表的基本操作
最新推荐文章于 2024-11-02 20:41:42 发布