【C语言】【数据结构】【顺序表】

1.顺序表的销毁和初始化:

初始化:

c 复制代码
void SLInit(SeqList* ps)
{
	ps->a = NULL;
	ps->capacity = 0;
	ps->size = 0;
}

销毁:

c 复制代码
void SLDestroy(SeqList* ps)
{
	if (ps->a)
		free(ps->a);
	ps->a = NULL;
	ps->size = ps->capacity = 0;
}

2.顺序表的扩容及打印:

扩容:

c 复制代码
void CheckRoom(SeqList* ps)
{
	if (ps->size == ps->capacity)
	{
		int newcapacity =  ps->capacity == 0 ? 4 : 2 * ps->capacity;
		SLDataType* tem = (SLDataType*)realloc(ps->a, sizeof(SLDataType) * newcapacity);
		ps->a = tem;
		ps->capacity = newcapacity;
	}
}

打印:

c 复制代码
void PrintList(SeqList* ps)
{
	int i = 0;
	for (i = 0;i < ps->size;i++)
	{
		printf("%d ", ps->a[i]);
	}
}

3.在顺序表的头部或尾部插入数据:

头插:

c 复制代码
void PushFront(SeqList* ps,SLDataType x)
{
	CheckRoom(ps);
	int i = ps->size;
	for (i = ps->size - 1;i >= 0;i--)
	{
		ps->a[i + 1] = ps->a[i];
	}
	ps->a[0] = x;
	ps->size++;
}

尾插:

c 复制代码
void PushBack(SeqList* ps, SLDataType x)
{
	CheckRoom(ps);
	ps->a[ps->size] = x;
	ps->size++;
}

4.删除顺序表头部或尾部的数据:

头删:

c 复制代码
void PopFront(SeqList* ps)
{
	assert(ps);
	assert(ps->size);
	for (int i = 1;i < ps->size;i++)
	{
		ps->a[i - 1] = ps->a[i];
	}
	ps->size--;
}

尾删:

c 复制代码
void PopBack(SeqList* ps)
{
	assert(ps);
	assert(ps->size);
	ps->size--;

}

5.删除指定元素:

c 复制代码
void Insert(SeqList* ps, SLDataType x)
{
	assert(ps);
	assert(ps->size);
	int i=Find(ps, x)-1;
	if (i < 0)
	{
		printf("未找到数据\n");
	}
	else
	{
		for (i;i < ps->size-1;i++)
		{
			ps->a[i] = ps->a[i + 1];
		}
		ps->size--;
	}
}
相关推荐
许白掰13 分钟前
Linux入门篇学习——Linux 编写第一个自己的命令,make 工具和 makefile 文件
linux·运维·服务器·学习
猎嘤一号17 分钟前
Windows11桌面解锁守护脚本
开发语言·python·opencv
一只鱼^_1 小时前
牛客周赛 Round 99
java·数据结构·c++·算法·贪心算法·动态规划·近邻算法
蓝婷儿1 小时前
Python 数据建模与分析项目实战预备 Day 2 - 数据构建与字段解析(模拟简历结构化数据)
开发语言·python·机器学习
李白洗一夜1 小时前
(新手友好)MySQL学习笔记(12):触发器,视图,三范式
笔记·学习·mysql
青衫客361 小时前
浅谈 Python 中的 yield——yield的返回值与send()的关系
开发语言·python
玩代码2 小时前
CompletableFuture 详解
java·开发语言·高并发·线程
hz_zhangrl2 小时前
CCF-GESP 等级考试 2025年6月认证C++三级真题解析
开发语言·c++·青少年编程·gesp·gesp2025年6月·c++三级
人生在勤,不索何获-白大侠3 小时前
day21——特殊文件:XML、Properties、以及日志框架
xml·java·开发语言
baynk5 小时前
逆向入门(9)汇编篇-bound指令的学习
汇编·学习