【数据结构】顺序表插入删除操作_C语言实现

本文是笔者针对自身所学顺序表作出的C语言代码和知识总结,
如有错误还请浏览者指出,
笔者不胜感激。

本文的思路:

先介绍①顺序表的定义;再直接介绍②顺序表基本操作的代码实现;最后③根据代码实现一个实例。如下图所示

在这里插入图片描述

图 1 本 文 思 路 图1 本文思路 1

1 顺序表的定义

线性表的顺序存储称顺序表。
其是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的元素在物理存储位置上也相邻。
线性表的特点:
1.逻辑顺序和物理顺序相同(因此插入删除需要移动大量的元素
2.随机存取
3.存储密度高

2 顺序表的基本操作及代码实现

前提,声明顺序表结构体L

#define MAXSIZE 20          /* 存储空间初始分配量 */
typedef struct
{
    int data[MAXSIZE];      /* 设为int数组,存储数据元素 */
    int length;             /* 线性表当前长度 */
}SqList;

2.1 初始化顺序表

作用:初始化表,构建一个空的线性表
代码:

bool InitList(SqList *L)  // 初始化表 构造一个空的线性表 
{ 
    L->length=0;
    return true;
}

2.2

int Length(SqList *L) // 返回表长 
{
	return L->length;
} 
bool ListInsert(SqList *L,int i,int e) // 第i个位置 插入元素的值为e 
{
	int k;
	if(i<1||i>L->length+1) return false; // 如果位置输入错误 则插入失败 
	if(L->length>=MAXSIZE) return false; // 如插入元素超过了表最大长度 则插入失败 
	
	for(k=L->length;k>i;k--)             // 第i个位置及以后位置全部后移
	{
		L->data[k]=L->data[k-1];
	}
	L->data[i-1]=e; // 第i个位置为e 
	L->length++; // 线性表长度加1 
	return true;
}
bool ListDelete(SqList *L,int i, int e) // 删除第i个位置的元素 并赋值给e 
{
	int k;
	if(i<1||i>L->length) return false; //如果i的位置不合法 则删除失败
	e=L->data[i-1];      //将第i个位置的元素赋值给变量e
	for(k=i;k<L->length;k++) // 将第i位置以及以后的元素前移 
	{
		L->data[k-1]=L->data[k] ;
	}
	L->length--; 
	return true;
} 
int LocateElem(SqList *L, int e)
{
	int k;
	for(k=0;k<L->length;k++)
	{
		if(L->data[k]==e)
		return k+1;
	}
	return 0;
}
int GetElem(SqList *L, int i) //按位查找 获取表L中第i个位置元素的值 
{
	if(i<1||i>L->length||L->length==0) return false; 
	return L->data[i-1];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值