顺序表--C语言

顺序表结构
顺序表结构如上

#include <stdbool.h>
typedef int Position;
typedef int ElementType;
#define MAXSIZE 1000
typedef struct LNode *List;
struct LNode {
	ElementType Data[MAXSIZE];
	Position Last;
};
//初始化
List MakeEmpty() {
	List L;
	L = (List)malloc(sizeof(struct LNode));
	L->Last = -1;

	return L;
}
#define ERROR -1

Position Find(List L, ElementType X) {
	Position i = 0;
	while (i <= L->Last&&L->Data[i] != X)
		i++;
	if (i > L->Last) return ERROR;
	else return i;	//找到后返回储存位置
}

bool Insert(List L, ElementType X, Position P) {
	//在L的指定位置P前插入一个新元素X
	Position i;

	if (L->Last == MAXSIZE - 1) {
		printf("表满");
		return false;
	}

	if (P<0 || P>L->Last + 1) {	//检查插入位置合法性
		printf("位置不合法");
		return false;
	}

	for (i = L->Last; i >= P; i--)
		L->Data[i + 1] = L->Data[i];	//将位置P及以后的元素顺序向后移动
	L->Data[P] = X;
	L->Last++;
	return true;
}

bool Delete(List L, Position P) {	//从L中删除指定位置P的元素
	Position i;

	if (P<0 || P>L->Last) {
		printf("位置%d不存在元素", P);
		return false;
	}
	for (i = P + 1; i <= L->Last; i++)
		L->Data[i-1] = L->Data[i];
	L->Last--;
	return true;
}

猜你喜欢

转载自blog.csdn.net/weixin_43125409/article/details/83989042