线性表数据结构代码

1.顺序表结构体的定义

//静态分配内存
#define MaxSize 100
typedef structf{
	int data[MaxSize];//根据顺序表中元素选择数据类型
	int length; //用于记录顺序表当前的长度
}SqList,
//动态分配内存
typedef struct{
	int * data.
	int MaxSize,length
}SeqList;

2.顺序表遍历

对顺序表工进行遍历并输出每个数据元素的数据值。

void ListVisit(SqList L){
	for(int i=0;i<L.length;i++)//顺序表的遍历
	printf(%d”,L.data[i]);
}

3.顺序表按值查找

假设有一个顺序表L,其存储的所有数据元素均为不重复的正数,查找L 中值为e的数据元素,若找到则返回其下标,若找不到则返回-1。

int Search e(SqList L.int e){
	for(int i=0;i<L.length;i++)//遍历顺序表L
		if(L.data[i]--e) //若找到值为e的元素,则返回其下标
			return 1;
	return -1;//若跳出 for 循环则代表未找到值为e的元素,则返回-1
}

4.顺序表按位查找

假设有一个顺序表L,其存储的所有数据元素均为正数,査找乚 中第i个数据元素并返回其值。

int Get i(SqList L,int i){
	if(i>=1&&i<=L.length)//若i的输入合法,则返回其值
		return L.data[i-1];
	retumn -1;//若i的输入不合法,则返回-1
}

5.顺序表逆置

设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为 O(1)

void Reverse(SqList &L){
	int temp; //定义辅助变量
	for(int i-0;i<L.length/2;i++){
		temp=L.data[i];//交换L.data[i]与L.data[L.length-i-1]变量值
		L.datali]=L.data[L.length-i-1];
		L.data[L.length-i-1]=temp;
	}
}

6.顺序表按位插入

在顺序表,的第i个位置插入新元素 e。若i的输入不合法,则返回false,表示插入失败;否则,将第i个元素及其后的所有元素依次往后移动一个位置,腾出一个空位置插入新元素 e,顺序表长度增加 1,插入成功,返回 true

bool ListInsert(SqList &L,int i,int e){
	if(i<1||i>L.length+1)//若i的输入不合法,则返回 false
		return false;
	if(L.length=-Maxsize) //若存储空间已满,则不能插入
		return false;
	for(int i=L.length;j>=i;i--)
		L.data[i]=L.data[i-1]; //将第i个元素以及之后的所有元素后移
	L.data[i-1]=e: //第i个位置插入新元素e
	L.length++; //更新顺序表长度
	return true: //插入成功,则返回 true
}

7.有序表插入元素

已知一个顺序表L,其中的元素递增有序排列,设计一个算法在插入元素 x(x为int 型)后保持该顺序表仍然递增有序排列,假设插入操作肯定成功,插入成功后返回插入元素所在位置。

int ListInsert(SqList &L.int x){
	int i; //定义变量i记录元素x插入位置
	for(i=0;i<L.length;i++)//遍历该顺序表工,寻找元素x的插入位置		
		if(L.data[i]>x)
			breakfor(int j=L.length;j>=i+1;j--)//将下标为i的元素及其后所有元素后移
		L.data[i]=L.data[i-1];
	L.data[i]=x; //在下标为i的位置插入新元素 x
	L.length++:;//更新顺序表长度
	return i: //返回插入元素所在位置
}

8.顺序表按位删除

删除顺序表L 中第i个位置的元素,若i的输入不合法,则返回 false;否则将被删元素赋给引用变量e,并将第 i+1个元素及其后的所有元素依次往前移动一个位置,返回 true

bool ListDelete(SqList &L,int i,int &e){
	if(i<1||i>L.length)//若i输入不合法,则返回 falsere
		turn false;
	e=L.data[i-1];//若i输入合法,则将待删除元素赋给引用变量e
	for(int j=i;i<L.length;i++)//将第 i+1 个元素及其后的所有元素依次前移
		L.data[i-1]=L.data[i];
	L.length--;//更新顺序表的长度
	return true:;//删除完成后返回 true
}

9.顺序表删除最小元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱康代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值