顺序表--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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值