顺序表的基本操作

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值