当前位置: 首页 > news >正文

数据结构顺序表

思维导图

练习

头文件

  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&#xff0c;图文并茂、包教包会&#xff01; Ubuntu 获取 Ubuntu 官网镜像下载速度较慢&#xff0c;建议从国内镜像网站下载&#xff0c;如网易、中科大、…...

源 “MySQL 5.7 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

源 “MySQL 5.7 Community Server” 的 GPG 密钥已安装&#xff0c;但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是&#xff1a;mysql-community-server-5.7.44-1.el7.x86_64 GPG 密钥配置为&#xff1a;file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql…...

springboot核心有几层架构

Spring Boot核心有四层架构&#xff1a; 应用层&#xff1a;包含应用程序的入口点和控制器层。这层负责接收请求、处理业务逻辑&#xff0c;并返回响应结果。 服务层&#xff1a;包含业务逻辑的实现。这层负责处理各种业务逻辑&#xff0c;例如数据处理、事务管理等。 数据访…...

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数字人-数字人视频创作数字人直播效果媲美真人

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

初识C语言·动态内存开辟

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

机器学习 | 利用Pandas进入高级数据分析领域

目录 初识Pandas Pandas数据结构 基本数据操作 DataFrame运算 文件读取与存储 高级数据处理 初识Pandas Pandas是2008年WesMcKinney开发出的库&#xff0c;专门用于数据挖掘的开源python库&#xff0c;以Numpy为基础&#xff0c;借力Numpy模块在计算方面性能高的优势&am…...

三、计算机理论-计算机网络-物理层,数据通信的理论基础,物理传输媒体、编码与传输技术及传输系统

物理层概述 物理层为数据链路层提供了一条在物理的传输媒体上传送和接受比特流的能力。物理层提供信道的物理连接&#xff0c;主要任务可以描述为确定与传输媒体的接口有关的一些特性&#xff1a;机械特性、电气特性、功能特性、过程特性 数据通信的理论基础 数据通信的意义 主…...

ERROR Failed to get response from https://registry.npm.taobao.org/ 错误的解决

这个问题最近才出现的。可能跟淘宝镜像的证书到期有关。 解决方式一&#xff1a;更新淘宝镜像&#xff08;本人测试无效&#xff0c;但建议尝试&#xff09; 虽然无效&#xff0c;但感觉是有很大关系的。还是设置一下比较好。 淘宝镜像的地址&#xff08;registry.npm.taobao…...

overflow产生的滚动条样式设置

修改overflow产生的滚动条样式&#xff0c;主要可以通过如下三个伪元素设置&#xff1a; 1)-webkit-scrollbar&#xff1a;设置水平滚动条的高度&#xff0c;垂直滚动的宽度 2)-webkit-scrollbar-thumb&#xff1a;设置滚动条里面的滑块样式 3)-webkit-scrollbar-track&…...

Ubuntu环境vscode配置Log4cplus库

1、下载源码 http://sourceforge.net/projects/log4cplus/ 2、安装 例如我下载的是2.0.8版本压缩包&#xff0c;需要解压缩 log4cplus-2.0.8.7z安装解压工具&#xff1a; apt install p7zip-full解压&#xff1a; 7z x log4cplus-2.0.8.7z -r -o/home/配置及编译安装&#x…...

vue中,使用file-saver导出文件,下载Excel文件、下载图片、下载文本

vue中&#xff0c;使用file-saver导出文件&#xff0c;下载Excel文件、下载图片、下载文本 1、基本介绍 npm地址&#xff1a;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文件。&#xff08;注意&#xff1a;touch后面有空格&#xff09; to…...

Backtrader 文档学习-Bracket Orders

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

Python编程 从入门到实践(项目二:数据可视化)

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

Linux版本下载Centos操作

目录 一、Centos7 二、下载Centos7镜像 三、下载Centos7 买了个硬件安装裸机&#xff08;一堆硬件&#xff09; 把安装盘放到虚拟机里面&#xff0c;给机器加电 配置设置 ​编辑 网络配置 开启网络功能 四、安装linux客户端 Xshell是什么 Xshell使用&#xff08;连接…...

Offer必备算法_二分查找_八道力扣OJ题详解(由易到难)

目录 二分查找算法原理 ①力扣704. 二分查找 解析代码 ②力扣34. 在排序数组中查找元素的第一个和最后一个位置 解析代码 ③力扣69. x 的平方根 解析代码 ④力扣35. 搜索插入位置 解析代码 ⑤力扣852. 山脉数组的峰顶索引 解析代码 ⑥力扣162. 寻找峰值 解析代码…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...