数据结构顺序表
思维导图

练习
头文件
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. 寻找峰值 解析代码…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果