数据结构顺序表
思维导图
练习
头文件
1 #ifndef __HEAD_H__2 #define __HEAD_H__3 4 5 #include <stdio.h>6 #include <string.h>7 #include <stdlib.h>8 9 10 #define MAXSIZE 711 typedef int datatype;12 enum13 {14 FLASE=-1,15 SUCCESS16 };17 //定义顺序表:数据元素和顺序表长度18 typedef struct SQLIST19 {20 //数据元素 21 datatype data[MAXSIZE];22 //顺序表长度23 int len;24 }sqlist;25 26 sqlist* create();27 int full(sqlist *list);28 int insert_rear(datatype element,sqlist *list);29 int output(sqlist *list);30 int delete_rear(sqlist *list);31 32 void search_index(sqlist*list,int index);33 void change_search_index(sqlist*list,int index,int element);34 void insert_index(sqlist*list,int index,int element);35 void delete_index(sqlist*list,int index);36 int search_key(sqlist*list,int element);37 void delete_same(sqlist*list);38 void change_key(sqlist*list,int key,int element);39 void delete_key(sqlist*list,int key);40 void bubble(sqlist*list);41 sqlist* free_space(sqlist*list);42 #endif
自定义函数
1 #include "head.h"2 3 4 5 /*6 * function: 创建顺序表在堆区7 * @param [ in] 8 * @param [out] 9 * @return 成功返回地址,失败返回NULL10 */11 12 13 sqlist* create()14 {15 sqlist *list=(sqlist*)malloc(sizeof(sqlist));16 if(NULL==list)17 return NULL;18 //成功返回堆区19 //对数据元素清零20 memset(list->data,0,sizeof(list->data));21 //顺序长度清零 22 list->len=0;23 return list;24 }25 26 27 28 /*29 * function: 判断是否为满30 * @param [ in] 31 * @param [out] 32 * @return 33 */34 int full(sqlist *list)35 {36 return list->len==MAXSIZE?FLASE:SUCCESS;37 }38 39 40 /*41 * function: 尾插入42 * @param [ in] 43 * @param [out] 44 * @return 45 */46 47 int insert_rear(datatype element,sqlist *list)48 {49 if(NULL==list ||full(list))50 return FLASE;51 list->data[list->len++]=element;52 return SUCCESS;53 }54 /*55 * function: 判空56 * @param [ in] 57 * @param [out] 58 * @return 59 */60 int empty(sqlist *list)61 {62 return list->len==0?FLASE:SUCCESS;63 }64 65 66 67 68 /* 69 * function: 遍历70 * @param [ in] 71 * @param [out] 72 * @return 成功返回0,失败返回-173 */74 75 76 int output(sqlist *list)77 {78 //判断顺序表是否创建成功79 //判断顺序表是否为空80 if(NULL==list || empty(list))81 return FLASE;82 //循环遍历83 for(int i=0;i<list->len;i++)84 {85 printf("%-5d",list->data[i]);86 87 }88 puts("");89 90 }91 92 /*93 * function: 尾删94 * @param [ in] 95 * @param [out] 96 * @return 97 */98 99
100 int delete_rear(sqlist *list)
101 {
102 //1.判断顺序表是否创建成功
103 //2.判断顺序表是否为空
104 if(NULL==list || empty(list))
105 return FLASE;
106 //3.删除
107 list->len--;
108 return SUCCESS;
109 }
110
111
112 /*
113 * function: 按下表查找
114 * @param [ in]
115 * @param [out]
116 * @return
117 */
118 void search_index(sqlist*list,int index)
119 {
120 if(NULL==list||empty(list)||index<0||index>=list->len)
121 return;
122 printf("element searched by search index is %d\n",list->data[index]);
123
124 }
125
126 /*
127 * function: 按下表修改
128 * @param [ in]
129 * @param [out]
130 * @return
131 */
132 void change_search_index(sqlist*list,int index,int element)
133 {
134 if(NULL==list||empty(list)||index<0||index>=list->len)
135 return;
136 list->data[index]=element;
137 }
138 /*
139 * function: 按下表插入
140 * @param [ in]
141 * @param [out]
142 * @return
143 */
144 void insert_index(sqlist*list,int index,int element)
145 {
146 if(NULL==list||full(list)||index<0||index>list->len)
147 return;
148 for(int i=list->len-1;i>=index;i--)
149 {
150 list->data[i+1]=list->data[i];
151 }
152 list->data[index]=element;
153 list->len++;
154 }
155
156 /*
157 * function: 按下表删除
158 * @param [ in]
159 * @param [out]
160 * @return
161 */
162 void delete_index(sqlist*list,int index)
163 {
164 if(NULL==list||empty(list)||index<0||index>=list->len)
165 return;
166 for(int i=index+1;i<list->len;i++)
167 {
168 list->data[i-1]=list->data[i];
169 }
170 list->len--;
171 }
172
173 /*
174 * function: 按元素查找
175 * @param [ in]
176 * @param [out]
177 * @return
178 */
179 int search_key(sqlist*list,int element)
180 {
181 if(NULL==list||empty(list))
182 return FLASE;
183 for(int i=0;i<list->len;i++)
184 {
185 if(element==list->data[i])
186 return i;
187 }
188 return FLASE;
189 }
190
191
192 /*
193 * function: 按元素去重
194 * @param [ in]
195 * @param [out]
196 * @return
197 */
198 void delete_same(sqlist*list)
199 {
200 for(int i=0;i<list->len-1;i++)
201 {
202 for(int j=i+1;j<list->len;j++)
203 {
204 if(list->data[i]==list->data[j])
205 {
206 delete_index(list,j);
207 j--;
208 }
209 }
210 }
211 }
212
213 /*
214 * function: 按任意元素修改
215 * @param [ in]
216 * @param [out]
217 * @return
218 */
219 void change_key(sqlist*list,int key,int element)
220 {
221
222 int index=search_key(list,key);
223 change_search_index(list,index,element);
224 }
225
226
227
228 /*
229 * function: 按任意元素删除
230 * @param [ in]
231 * @param [out]
232 * @return
233 */
234 void delete_key(sqlist*list,int key)
235 {
236 int index=search_key(list,key);
237 delete_index(list,index);
238 }
239
240 /*
241 * function: 顺序表排序
242 * @param [ in]
243 * @param [out]
244 * @return
245 */
246 void bubble(sqlist*list)
247 {
248 for(int i=0;i<list->len-1;i++)
249 {
250 for(int j=0;j<list->len-i;j++)
251 {
252 if(list->data[j]<list->data[j+1])
253 {
254 int temp=list->data[j];
255 list->data[j]=list->data[j+1];
256 list->data[j+1]=temp;
257 }
258 }
259 }
260 }
261
262
263
264 /*
265 * function: 顺序表释放空间
266 * @param [ in]
267 * @param [out]
268 * @return
269 */
270 sqlist* free_space(sqlist*list)
271 {
272 if(NULL==list)
273 return NULL;
274 free(list);
275 list=NULL;
276 return NULL;
277 }
主函数
1 #include "head1.h"2 int main(int argc, const char *argv[])3 {4 //创建顺序表在堆区5 sqlist *list=create();6 7 8 //循环尾插9 int n;10 datatype element;11 printf("请输入长度");12 scanf("%d",&n);13 for(int i=0;i<n;i++)14 {15 printf("请输入尾插入的值");16 scanf("%d",&element);17 int flag=insert_rear(element,list);18 if(flag==FLASE)19 {20 puts("NULL or FULL");21 break;22 }23 }24 //循环遍历 25 output(list);26 27 28 //尾删29 delete_rear(list);30 printf("尾删后\n");31 output(list);32 33 34 35 36 //按下表查找37 int index;38 39 40 //输入要查找的下表41 printf("please enter search index:");42 scanf("%d",&index);43 //输出查找下表的值44 printf("下表查找的值\n");45 search_index(list,index);46 47 48 49 50 //任意下表修改51 //输入修改下表52 printf("please enter change index:");53 scanf("%d",&index);54 //输入要修改的值55 printf("please enter change element:");56 scanf("%d",&element);57 change_search_index(list,index,element);58 //输出修改后的结果59 printf("按任意下表修改后:\n");60 output(list);61 puts("");62 63 //按下表插入64 //输入要插入的下表65 printf("please enter insert index:");66 scanf("%d",&index);67 //输入要插入的值68 printf("please enter insert element:");69 scanf("%d",&element);70 insert_index(list,index,element);71 //插入后的结果72 printf("按下表插入后\n");73 output(list);74 puts("");75 76 77 78 //按下表删除79 //输入要删除的下表80 printf("please enter delete index:");81 scanf("%d",&index);82 delete_index(list,index);83 //删除后的结果84 printf("按下表删除后\n");85 output(list);86 puts("");87 88 89 //按元素查找90 printf("please enter search element:");91 scanf("%d",&element);92 int flag=search_key(list,element);93 printf("查找的元素的下表为:");94 if(flag==-1)95 puts("error");96 else97 printf("%d\n",flag);98 puts("");99
100 //按元素去重
101 delete_same(list);
102 printf("按元素去重后\n");
103 output(list);
104 puts("");
105
106
107 int key;
108
109 //按任意元素修改
110 printf("please enter change key:");
111 scanf("%d",&key);
112 printf("please enter change element:");
113 scanf("%d",&element);
114 change_key(list,key,element);
115 printf("按任意下表修改后\n");
116 output(list);
117 puts("");
118
119
120 //按任意元素删除
121 printf("please enter delete key:");
122 scanf("%d",&key);
123 delete_key(list,key);
124 printf("按任意元素删除后\n");
125 output(list);
126 puts("");
127
128
129 //冒泡排序顺序表
130 bubble(list);
131 printf("排序后\n");
132 output(list);
133 puts("");
134
135 //顺序表释放空间
136 list=free_space(list);
137 return 0;
138 }
效果图
相关文章:

数据结构顺序表
思维导图 练习 头文件 1 #ifndef __HEAD_H__2 #define __HEAD_H__3 4 5 #include <stdio.h>6 #include <string.h>7 #include <stdlib.h>8 9 10 #define MAXSIZE 711 typedef int datatype;12 enum13 {14 FLASE-1,15 SUCCESS16 };17 //定义顺序表&a…...

手把手教你优雅的安装虚拟机 Ubuntu —— 图文并茂
目录 Ubuntu 获取Vmware 安装新建虚拟机Ubuntu 安装虚拟机工具安装更多内容 本文教你如何优雅的在虚拟机中安装 Ubuntu,图文并茂、包教包会! Ubuntu 获取 Ubuntu 官网镜像下载速度较慢,建议从国内镜像网站下载,如网易、中科大、…...
源 “MySQL 5.7 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
源 “MySQL 5.7 Community Server” 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是:mysql-community-server-5.7.44-1.el7.x86_64 GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql…...
springboot核心有几层架构
Spring Boot核心有四层架构: 应用层:包含应用程序的入口点和控制器层。这层负责接收请求、处理业务逻辑,并返回响应结果。 服务层:包含业务逻辑的实现。这层负责处理各种业务逻辑,例如数据处理、事务管理等。 数据访…...

css3表格练习
1.效果图 2.html <div class"line"></div><h3>获奖名单</h3><!-- 表格 cellspacing内边距 cellpadding外边距--><table cellspacing"0" cellpadding"0" ><!-- thead表头 --><thead><tr>…...

项目实战——Qt实现FFmpeg音视频转码器
文章目录 前言一、移植 FFmpeg 相关文件二、绘制 ui 界面三、实现简单的转码四、功能优化1、控件布局及美化2、缩放界面3、实现拖拽4、解析文件5、开启独立线程6、开启定时器7、最终运行效果 五、附录六、资源自取 前言 本文记录使用 Qt 实现 FFmepg 音视频转码器项目的开发过…...

AI数字人-数字人视频创作数字人直播效果媲美真人
在科技的不断革新下,数字人技术正日益融入到人们的生活中。近年来,随着AI技术的进一步发展,数字人视频创作领域出现了一种新的创新方式——AI数字人。数字人视频通过AI算法生成虚拟主播,其外貌、动作、语音等方面可与真实人类媲美…...

初识C语言·动态内存开辟
1 为什么要有动态内存开辟 int a 10; int arr[10] { 0 }; 上述定义了一个整型,开辟了4个字节,定义了一个整型数组,开辟了40个字节,但是是固定开辟的,面对灵活多变的实际问题的时候可能就有点鸡肋,这种开…...

机器学习 | 利用Pandas进入高级数据分析领域
目录 初识Pandas Pandas数据结构 基本数据操作 DataFrame运算 文件读取与存储 高级数据处理 初识Pandas Pandas是2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势&am…...
三、计算机理论-计算机网络-物理层,数据通信的理论基础,物理传输媒体、编码与传输技术及传输系统
物理层概述 物理层为数据链路层提供了一条在物理的传输媒体上传送和接受比特流的能力。物理层提供信道的物理连接,主要任务可以描述为确定与传输媒体的接口有关的一些特性:机械特性、电气特性、功能特性、过程特性 数据通信的理论基础 数据通信的意义 主…...

ERROR Failed to get response from https://registry.npm.taobao.org/ 错误的解决
这个问题最近才出现的。可能跟淘宝镜像的证书到期有关。 解决方式一:更新淘宝镜像(本人测试无效,但建议尝试) 虽然无效,但感觉是有很大关系的。还是设置一下比较好。 淘宝镜像的地址(registry.npm.taobao…...
overflow产生的滚动条样式设置
修改overflow产生的滚动条样式,主要可以通过如下三个伪元素设置: 1)-webkit-scrollbar:设置水平滚动条的高度,垂直滚动的宽度 2)-webkit-scrollbar-thumb:设置滚动条里面的滑块样式 3)-webkit-scrollbar-track&…...
Ubuntu环境vscode配置Log4cplus库
1、下载源码 http://sourceforge.net/projects/log4cplus/ 2、安装 例如我下载的是2.0.8版本压缩包,需要解压缩 log4cplus-2.0.8.7z安装解压工具: apt install p7zip-full解压: 7z x log4cplus-2.0.8.7z -r -o/home/配置及编译安装&#x…...
vue中,使用file-saver导出文件,下载Excel文件、下载图片、下载文本
vue中,使用file-saver导出文件,下载Excel文件、下载图片、下载文本 1、基本介绍 npm地址:file-saver - npm 2、安装 # Basic Node.JS installation npm install file-saver --save bower install file-saver# Additional typescript defin…...
【VUE】v-if 和 v-show 大详解(多角度分析+面试简答版)
多角度分析+面试简答版 一、`v-if` 和 `v-show` 的区别之多角度分析控制手段:编译过程:编译条件:性能消耗:总结使用场景二、 `v-if`、`v-show`、`display:none` 和`visibility: hidden` 的区别三、简洁版回答:`v-show` 与 `v-if` 比较一、v-if 和 v-show 的区别之多角度分…...
mac intel jdk安装与配置
jdk地址下载 https://www.oracle.com/java/technologies/downloads/ https://repo.huaweicloud.com/java/jdk/8u201-b09/ 安装后 下载完成之后打开终端 注意如果是第一次配置环境变量需要创建.bash_profile文件。(注意:touch后面有空格) to…...

Backtrader 文档学习-Bracket Orders
Backtrader 文档学习-Bracket Orders 1. 概述 组合订单类型是一个非常宽泛的订单类别,只要brokder支持的订单类型都可以, 包括(Market, Limit, Close, Stop, StopLimit, StopTrail, StopTrailLimit, OCO)。 该功能用于回测,交互broker Brac…...

Python编程 从入门到实践(项目二:数据可视化)
本篇为实践项目二:数据可视化。 配合文章python编程入门学习,代码附文末。 项目二:数据可视化 1.生成数据1.1 安装Matplotlib1.2 绘制简单的折线图1.2.1 修改标签文字和线条粗细1.2.2 校正图形1.2.3 使用内置样式1.2.4 使用scatter()绘制散点…...

Linux版本下载Centos操作
目录 一、Centos7 二、下载Centos7镜像 三、下载Centos7 买了个硬件安装裸机(一堆硬件) 把安装盘放到虚拟机里面,给机器加电 配置设置 编辑 网络配置 开启网络功能 四、安装linux客户端 Xshell是什么 Xshell使用(连接…...

Offer必备算法_二分查找_八道力扣OJ题详解(由易到难)
目录 二分查找算法原理 ①力扣704. 二分查找 解析代码 ②力扣34. 在排序数组中查找元素的第一个和最后一个位置 解析代码 ③力扣69. x 的平方根 解析代码 ④力扣35. 搜索插入位置 解析代码 ⑤力扣852. 山脉数组的峰顶索引 解析代码 ⑥力扣162. 寻找峰值 解析代码…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...