顺序表的相关操作 头插,尾插,头删,尾删,任意位置插入删除

顺序表的相关操作 头插,尾插,头删,尾删,任意位置插入删除

顺序表的定义

定义一个结构体来存储顺序表,结构体三个元素:数组指针data,有效元素个数size,和数组当前的容量capacity。

此处应该注意为了提高代码的适用性,我们将数组的数据类型用typedef起了个别名,slDatatype,方便后期操作其他数据类型时使用。

初始化顺序表

将顺序表初始化,即该顺序表已存在,但是内容为空

检查容量及扩容

由于该顺序表需要动态开辟空间来存储,所以在插入操作时就需要检查空间大小是否满足插入数据的需求,无论在那个位置插入元素,都需要进行检查。

尾插尾删操作

尾插:首先判断该顺序表是否合法,然后检查容量及扩容,在该数组的最后一个有效位置之后放入需要插入的数据,然后将size++,即将插入的数据存入顺序表的有效位中。

尾删:判断顺序表合法,然后直接将size- -,即最后一位不是顺序表的有效数据。此处为假删除,该位置的数据其实并未删除,只是切断了其与顺序表的联系,无法再使用。

头插头删操作

头插和头删比较尾插尾删相对复杂,因为都涉及了元素的移动。

头插:判断合法,检查容量,再将该顺序表所有元素按照从后向前的顺序,分别向后移动一位,然后在首位插入指定元素。

头删:结合头插和尾删操作,按照从前向后的顺序将元素分别向前移动一位即可。

任意位置的插入,删除

类比头插头删,尾插尾删操作,只需要在再入需要操作的位置pos即可实现,该功能实现后也可进一步优化头删头插尾删尾插操作,只要想pos分别置为0和size即可。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef int slDatatype;//顺序表内的数据类型(便于维护)

//动态顺序表
typedef struct seqList 
{
   
	slDatatype *data;  //数组指针
	int size;           //有效元素个数
	int capacity;       //数组内存空间

} seqList;

//初始化顺序表
void Init(seqList* sl)//形参为结构体指针
{
   
	sl->data = NULL;
	sl->size = 0;
	sl->capacity = 0;
}


//检查容量及扩容
void Checkcapacity(seqList*sl)
{
   
	if (sl->size == sl->capacity)
	{
   
		//开辟新空间
		int newCapacity = sl->capacity == 0 ? 1 : 2 * sizeof
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值