线性表结构之顺序表

typedef int ElemType;
typedef int Status;
typedef struct
{
	ElemType data[MAXSIZE];
	int length;  //线性表中元素个数
}SqList;
/* 初始化顺序线性表 */
Status InitList(SqList *L)
{
	L->length = 0;
	return OK;
}
/*获取元素*/
/*i:第i个元素,对应下表为i-1*/
Status GetElem(SqList L, int i, ElemType *e)
{
	if (L.length == 0 || i<1 || i>L.length)
		return FALSE;
	*e = L.data[i - 1];
	return OK;
}
/*插入元素*/
Status ListInsert(SqList *L, int i, ElemType e)
{
	int k;
	if (L->length == MAXSIZE)
		return ERROR;
	if (i<1 || i>L->length + 1)
		return ERROR;
	if (i <= L->length)//如果插入不在最后位置
	{
		for (k = L->length - 1; k >= i - 1; --k)
			L->data[k + 1] = L->data[k];
	}
	L->data[i - 1] = e;
	L->length++;
	return OK;
}

/*删除元素*/
Status ListDelete(SqList *L, int i, ElemType *e)
{
	int k;
	if (L->length == 0)
		return ERROR;
	if (i<1 || i>L->length)
		return ERROR;
	*e = L->data[i - 1];
	if(i<L->length)//如果删除不在最后位置
	{ 
	for (k = i; k <=L->length - 1; ++k)
		L->data[k - 1] = L->data[k];
	}
	--L->length;
	return OK;
}

你可能感兴趣的:(线性表结构之顺序表)