数据结构——线性表(Code)

这篇博客详细介绍了线性表的三种常见实现方式——顺序表、单链表和双链表,包括它们的基本操作如结构体定义、查找、插入、删除和遍历等。提供了清晰的代码实现,便于理解和实践。
摘要由CSDN通过智能技术生成

下面写的代码可能感觉会很乱,所以加上了目录,意在为了引导,也就是你需要回顾哪个算法,就能够快速定位到该位置,如果从上往下去找的话,估计脑壳也疼死了。

一、线性表的基本操作
(一)顺序表的基本操作
1. 顺序表的结构体
#define MAX_SIZE 30				//设置顺序表最大容量
typedef struct
{
   
	int data[MAX_SIZE];			//设置数据最大长度
	int length;					//设置数据当前长度

}Sqlist;
2. 顺序表的查找
/*
method:
	顺序表的查找
param:
	L 顺序表
	n代表要查找的元素
*/

int Find_Elem(Sqlist L, int n)
{
   
	int result = 0;								//存放所查找到匹配值的下标
	for (result; result < n; result++)
	{
   
		if (L.data[result] == n)
			return result;
	}
	return ERROR;
}
3. 顺序表的插入
/*
method:
	顺序表的插入
param:
	sqlist 要操作的顺序表
	pos    要插入的位置
	data   要插入的数据
*/
int Insert_Elem(Sqlist* sqlist, int pos, int data)
{
   
	int i = 0;
	if (pos<0 || pos>sqlist->length || sqlist->length == MAX_SIZE)		//这里是判断 如果 查询位置不在线性表内,或者线性表长度满了,则返回Error
		return ERROR;
	for (i = sqlist->length-1; i >= pos; i--)							//这个循环将pos位置后面的元素由后往前向后挪1个位置
		sqlist->data[i+1] = sqlist->data[i];
	sqlist->data[pos] = data;											//插入设定值
	sqlist->length += 1;												//线性表长度加1
	return OK;
}
4. 顺序表的删除
/*
method:
	顺序表的删除
param:
	sqlist	要操作的顺序表
	pos		要删除的位置
	num		存放删除的元素
*/

int Delete_Elem(Sqlist* sqlist, int pos,int *num)						
{
   
	int i = pos;
	if (pos<0 || pos >sqlist->length)
		return ERROR;
	*num = sqlist->data[pos];											//得到删除的值
	for (i; i < sqlist->length; i++)									//由前往后,pos位置后面的值依次往前移动
		sqlist->data[i] = sqlist->data[i + 1];
	sqlist->length -= 1;												//线性表长度减1
	return OK;
}
5. 顺序表的更改
/*
method:
	顺序表的更改
param:
	sqlist	要操作的顺序表
	pos		要修改的位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值