顺序表-数据结构

news2024/11/24 11:52:43

一、结构定义

顺序表是通常是数组,要求数据连续存储。顺序表又分为定长顺序表和变长顺序表,本文实现后者。

1、头文件

#include <stdio.h>
#include <stdlib.h>

2、定长顺序表

#define MAX 100
定长顺序表结构
typedef struct SqList {
	int arr[MAX];
	int size;
}Sq;

3、变长顺序表

//变长顺序表 
typedef struct SqList {
	int* arr;
	int size;
	int capacity;
}Sq;

二、功能实现

1、初始化

//初始化
bool Sq_init(SqList* S) {
	//检查空指针
	if (S == NULL){
		printf("init false");
		exit(-1);
	}
	S->arr = (int*)malloc(sizeof(int) * 30);
	//检查malloc是否成功
	if (S->arr == NULL) {
		printf("malloc false");
		return false;
	}
	S->capacity = 30;
	S->size = 0;
	return true;
}

2、扩容

//检查数组、满则扩容
bool Sq_Check(SqList* S)
{
	if (S->size == S->capacity)
	{
		int newcapacity = S->capacity + 30;
		int* arr_tmp = (int*)realloc(S->arr, newcapacity * sizeof(int));
		if (arr_tmp == NULL) {
			printf("realloc false");
			exit(-1);
		}
		S->arr = arr_tmp;
		S->capacity = newcapacity;
	}
}

3、插入

//头插
bool Sq_PushFront(SqList* S,int value)
{
	if (S == NULL)
		exit(-1);
	Sq_Check(S);
	for (int i = S->size; i > 0; i--){
		S->arr[i] = S->arr[i - 1];
	}
	S->arr[0] = value;
	S->size++;
	return true;
}
//尾插
bool Sq_PushBack(SqList* S, int value)
{
	if (S == NULL)
		exit(-1);
	Sq_Check(S);
	S->arr[S->size] = value;
	S->size++;
	return true;
}

4、删除

//头删
int Sq_PopFront(SqList* S)
{
	//头删就是把序号为0的元素删除
	//若需要删除序号为x的元素
	//只需要更改i的初始值和循环次数即可

	if (S == NULL)
		exit(-1);
	//让后一项覆盖前一项,重复size-1次
	int ret = S->arr[0];
	for (int i = 0; i < S->size - 1; i++)
	{
		S->arr[i] = S->arr[i + 1];
	}
	S->size--;
	return ret;
}
//尾删
int Sq_PopBack(SqList* S)
{
	if (S == NULL)
		exit(-1);
	int ret = S->arr[S->size - 1];
	S->size--;
	return ret;
}

5、查询

//查
int Sq_Select(SqList* S, int x)
{
	if (S == NULL)
		exit(-1);
	if (x >= S->size)
		exit(-1);
	return S->arr[x];
}

6、主函数及打印


void Sq_Print(SqList* S)
{
	for (int i = 0; i < S->size; i++)
	{
		printf("%d ", S->arr[i]);
	}
	printf("\n");
}
int main(){
	SqList* S = (SqList*)malloc(sizeof(SqList));
	Sq_init(S);
	Sq_PushBack(S, 1);
	Sq_PushBack(S, 2);
	Sq_PushBack(S, 3);
	Sq_PushFront(S, 4);
	Sq_Print(S);
	Sq_PopBack(S);
	Sq_PopFront(S);
	Sq_Print(S);
	printf("%d",Sq_Select(S, 1));
	return 0;
}

三、效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五种创建springBoot项目的方法(本质上是三种)

文章目录 1. 使用https://start.aliyun.com/的服务器URL2. 使用https://start.spring.io/3. https://start.spring.io/使用官网4. 使用https://start.aliyun.com/5. 使用maven构建springboot项目5.1 点击maven&#xff0c;什么也不选&#xff0c;点击下一步5.2 修改名称和组ID&…

c语言第十天笔记

函数的概述 函数&#xff1a; 实现一定功能的&#xff0c;独立的代码模块。我们的函数一定是先定义&#xff0c;后使用。 使用函数的优势&#xff1a; 1. 我们可以通过函数提供功能给别人使用。当然我们也可以使用别人提供的函数&#xff0c;减少代码量。 2. 借助函数可以…

《学会 SpringMVC 系列 · 参数解析器 ArgumentResolvers》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

HQChart实战教程76-自定义Y轴刻度线

HQChart实战教程76-自定义Y轴刻度线 Y轴刻度线效果图HQChart插件源码地址步骤1. 注册事件2.回调事件eventdataobj数据说明完整实例源码Y轴刻度线 在K线图上,通过绘制一些特殊的刻度线来标识状态。我们可以通过SetOption里面设置,也可以通过回调函数动态设置。本教程是使用回…

微服务之SpringAMQP详解

目录 前言 1. 概述 2. Basic Queue简单队列模型 2.1 消息发送 2.2 消息接收 2.3 总结 3. WorkQueue模型 3.1 消息发送 3.2 消息接收 3.3 测试 3.4 消费预取限制 3.5 总结 4. 发布、订阅 5. Fanout 5.1 声明队列和交换机 5.2 消息发送 5.3 消息接收 5.4 测试 5…

SpringBoot集成阿里百炼大模型(初始demo) 原子的学习日记Day01

文章目录 概要下一章SpringBoot集成阿里百炼大模型&#xff08;多轮对话&#xff09; 原子的学习日记Day02 整体架构流程技术名词解释集成步骤1&#xff0c;选择大模型以及获取自己的api-key&#xff08;前面还有一步开通服务就没有展示啦&#xff01;&#xff09;2&#xff0c…

遗传算法与深度学习实战——生命模拟与进化论

遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等&#xff0c;试图模…

KMZ格式详解,javascript写入读取KMZ示例

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

myeclipse 2020 下载 安装 汉化

1&#xff0c;解压 myeclipse 2020 压缩包到当前目录下&#xff1a; 点击此处蓝色字体下载压缩包 提取码 k3x9 2&#xff0c;鼠标右键 点击 myeclipse 2020.exe 选择 以管理员身份运行 &#xff1a; 3&#xff0c;等待加载&#xff1a; 4&#xff0c;点击 Next &#xff1a; 5…

【数学建模】2024华数杯A题思路(已完成)

视频预览&#xff1a; 2024华数杯A题已完成 作品连接&#xff1a;https://mbd.pub/o/bread/ZpmWmJxu 文章目录 一、题目二、分析三、代码示例 一、题目 机器臂是一种自动化装置&#xff0c;广泛应用于工业生产、精密操作、危险环境作业和物流等领域。关节角路径的优化设计对于…

Transformer在生成细胞数据上的应用

来自&#xff1a;scTranslator: A pre-trained large generative model for translating single-cell transcriptome to proteome 工程地址&#xff1a;https://github.com/TencentAILabHealthcare/scTranslator 在scTranslator中&#xff0c;有3个阶段&#xff1a;paired bu…

【xilinx】XCZU1CG-1SBVA484I FPGA 的 VCC_PSBATT 引脚的正确电压范围是多少?

我正在做一个涉及 XCZU1Cg-1SBVA484I FPGA IC 的项目。对于 PSBATT 部分&#xff0c;根据 DS925 文档&#xff0c;提到 VCC_PSBATT 电压范围为 1.2V ~ 1.5V。但在同一文档中&#xff0c;注释部分规定&#xff1a;Vcc_psbatt 最高可接受 1.89V。 根据 UG1085 文档&#xff0c;使…

HarmonyOS 习题(二)

1、在类Web开发范式自定义组件创建后&#xff0c;加入到Page组件树时&#xff0c;会触发以下哪一项回调。 A&#xff09;Onlnit B&#xff09;OnAttached C&#xff09;OnLayoutReady D&#xff09;OnDetached 答案&#xff1a;B 分析: onlnit:自定义组件初始化生命周期回调&a…

HTML常用标签和CSS的运用

目录 1.HTML标签 1.1 文档结构标签 1.2 文本格式标签 1.3 列表标签 1.4 链接和媒体标签 1.5 表格标签 1.6 表单标签 1.7 分区和布局标签 1.8 元数据标签 2.css样式 2.1 字体样式 2.2 文本样式 2.3 背景样式 2.4 边框样式 2.5 间距样式 2.6 宽度和高度 2.7 显示…

NLP——Transfromer 架构详解

Transformer总体架构图 输入部分&#xff1a;源文本嵌入层及其位置编码器、目标文本嵌入层及其位置编码器 编码器部分 由N个编码器层堆叠而成 每个编码器层由两个子层连接结构组成 第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接 第二个子层连接结构包…

音质提升秘籍:专业音频剪辑软件汇总

现在欣赏传输音频文件比以前简单多了&#xff0c;这些音频的质量也影响了听众的体验与感受。所以使用一些靠谱的音频剪辑工具处理音频能让你的音频文件呈现更好的效果。 1.福昕音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ 这是一款电脑端软件。别看…

MySQL查询最近7天的分组数据,无则补零

需求是&#xff1a;有个查询最近7天的折线图&#xff0c;这个就要求没有数据就要补0 现在表名为&#xff1a;wo_work_order 时间字段为&#xff1a;create_time SQL如下&#xff1a; SELECTDATE_FORMAT( a.timeDay, %Y-%m-%d ) AS day,IFNULL( b.count, 0 ) AS count FROM(S…

5.怎么使用Element ui来做一个前端登录页面

找到Layout 布局 他通过基础的 24 分栏&#xff0c;迅速简便地创建布局。 找一个对齐方式 这个就不错,找到对应的代码 这个 复制进入idea 引入我们的图片和文字 我这里图片有点问题 然后我再添加一条分割线 加入表单校验 把里面的代码同上加入idea 结果 对表单内容进行调整 …

半导体设备SAP实施的主要特点有哪些?

在半导体这一高度技术密集且竞争激烈的行业中&#xff0c;企业的高效运营和精准管理成为了决胜市场的关键。SAP作为全球领先的企业管理软件提供商&#xff0c;其半导体设备解决方案以其独特的功能和特点&#xff0c;为半导体企业带来了显著的运营优化和竞争力提升。本文将跟大家…

C# 类型转换

隐式&#xff08;implicit&#xff09;类型转换 1.不丢失精度的转换 2.显示&#xff08;explicit&#xff09;类型的转换 有可能丢失精度的转换 使用convert转换 ToString方法&#xff1a;将数值类型转换成字符串型