数据结构顺序表
思维导图
练习
头文件
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. 寻找峰值 解析代码…...

SpringBoot对Bean的管理
Bean扫描 Spring中使用标签扫描或者注解 Springboot中没有使用标签或者注解它是怎么扫描的我的controlelr,service等等 核心在于springboot启动类中的SpringBootApplication注解 此注解其实是一个组合注解 它组合了一个ComponentScan注解,相当于在启…...

体验 AutoGen Studio - 微软推出的友好多智能体协作框架
体验 AutoGen Studio - 微软推出的友好多智能体协作框架 - 知乎 最近分别体验了CrewAI、MetaGPT v0.6、Autogen Studio,了解了AI Agent 相关的知识。 它们的区别 可能有人要问:AutoGen我知道,那Autogen Studio是什么? https://g…...

超简单的正则表达式从入门到精通
正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 概念 正则表达式是对字…...

webpack常用配置
1.webpack概念 本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 …...

nodejs学习计划--(六)包管理工具
包管理工具 1. 介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可以快…...

数字地球开放平台农作物长势监测解决方案
数字地球开放平台农作物长势监测解决方案 利用遥感技术进行产量预测是一种高效而准确的方法,通过监测植被的生长状况、土地利用、气象等因素,可以为农业决策提供有力支持。数字地球开放平台拥有200颗卫星,为您提供一站式卫星遥感服务。 农情监…...

react hooks 的useState:
React 的 useState Hook 是一种用于在函数组件中管理状态的机制。它可以让函数组件具有类似于类组件的状态管理能力。 useState Hook 接收一个初始值作为参数,并返回一个包含状态值和更新状态值的数组。 import { useState } from react;const [state, setState] …...

编程那么难,为什么不弄一个大众一学就会的计算机语言呢?
大家好!今天要和大家聊聊一个有趣的想法: 想象一下,如果编程变得像拼乐高积木一样简单,那将是多么美妙的事情啊!不需要费尽心思去学习繁杂的语法规则和复杂的逻辑,只需要将代码块像积木一样拼接起来&#x…...

论文阅读2---多线激光lidar内参标定原理
前言:该论文介绍多线激光lidar的标定内参的原理,有兴趣的,可研读原论文。 1、标定参数 rotCorrection:旋转修正角,每束激光的方位角偏移(与当前旋转角度的偏移,正值表示激光束逆时针旋转&…...

Ubuntu 22.04 apt 安装 ros1 ros Noetic Ninjemys
众所周知 ros2还有很多功能没有移植,而ros1官方不再支持 ubuntu 20.04 之后的版本。另一方面Ubuntu 22.04 更新了很多对新硬件的驱动,有更好的兼容性和体验,这就变的很纠结。 如果想在 22.04 使用最新版本的 ros noetic 只有自己编译一个办法…...