顺序表增删改查(c语言)

main函数:

 #include <stdio.h>#include "./seq.h"int main(int argc, const char *argv[]){SeqList* list =  create_seqList();insert_seqList(list,10);insert_seqList(list,100);insert_seqList(list,12);insert_seqList(list,23);show_seqList(list);int res;res=delete_seqList(list);printf("%d\n",res);                                 insert_byid_seqList(list,66,1);show_seqList(list);int n=delete_byid_seqList(list,2);printf("被删除的数据为%d\n",n);show_seqList(list);updata_byid(list,1);show_seqList(list);int x=search_byid(list,1);printf("查找的数据为%d\n",x);int idx=selectidx_bydata_seqList(list,10);printf("%d\n",idx);return 0;}

函数部分:

  1 #include <stdio.h>                                                                                                                                    2 #include <stdlib.h>                                                                                                                                   3 #include "./seq.h"                                                                                                                                    4                                                                                                                                                       5 /*                                                                                                                                                    6  * function:    创建顺序表                                                                                                                            7  * @param[ in]                                                                                                                                        8  * @param[out]                                                                                                                                        9  * @return                                                                                                                                            10  */                                                                                                                                                   11 //创建顺序表                                                                                                                                          12 SeqList* create_seqList()                                                                                                                             13 {                                                                                                                                                     14     SeqList *list=(SeqList *)malloc(sizeof(SeqList));//申请对空间在函数结束后不会被销毁                                                               15     if(NULL == list)//定义顺序表是否为空                                                                                                              16     {                                                                                                                                                 17         return NULL;                                                                                                                                  18     }                                                                                                                                                 19     list->pos=0;//初始化记录下标位置为0                                                                                                               20                                                                                                                                                       21     return list;                                                                                                                                      22 }                                                                                                                                                     23 //在顺序表尾部插入数据                                                                                                                                24 void insert_seqList(SeqList * list,datatype num)                                                                                                      25 {                                                                                                                                                     26     if(list->pos >= N)          //判断顺序表是否满了                                                                                                  27     {                                                                                                                                                 28         printf("顺序表已满,插入失败!\n");                                                                                                           29         return;                                                                                                                                       30     }                                                                                                                                                 31     list->data[list->pos] = num;//将要插入的数据给到末尾为的pos下标                                                                                   32     (list->pos)++;              //将pos后移                                                                                                           33     printf("插入成功!\n");                                                                                                                           34     return;                                                                                                                                           35 }                                                                                                                                                     36 //根据下标插入数据                                                                                                                                    37 void insert_byid_seqList(SeqList *list,datatype num,int n)//n为需要插入数据的下标                                                                     38 {                                                                                                                                                     39     int i;                                                                                                                                            40     if(n<0||n>list->pos)                                                                                                                              41     {                                                                                                                                                 42         printf("插入的位置非法!\n");                                                                                                                 43     }                                                                                                                                                 44                                                                                                                                                       45     if(n>list->pos || list->pos>=N)                                                                                                                   46     {                                                                                                                                                 47         printf("顺序表已满,插入失败!\n");                                                                                                           48         return;                                                                                                                                       49     }                                                                                                                                                 50         for(i=list->pos;i>n;i--)//先将顺序表中的数据后移                                                                                              51     {                                                                                                                                                 52         list->data[i]=list->data[i-1];                                                                                                                53     }                                                                                                                                                 54     list->data[n] = num;   //将目标数据赋给目标下标                                                                                                   55     (list->pos)++;         //将pos的值+1                                                                                                              56     printf("插入成功!\n");                                                                                                                           57                                                                                                                                                       58 }                                                                                                                                                     59 //根据下标删除数据                                                                                                                                    60 datatype delete_byid_seqList(SeqList* list,int x)                                                                                                     61 {                                                                                                                                                     62     int i;                                                                                                                                            63     datatype num;//先定义一个变量用来存储要被删除的数据,以免被覆盖                                                                                   64     if(x<0 || x>=list->pos)                                                                                                                           65     {                                                                                                                                                 66         printf("删除失败!\n");                                                                                                                       67     }                                                                                                                                                 68     num=list->data[x];                                                                                                                                69     for(i=x;i<list->pos-1;i++)//先找到要删除的下标位置,将后面的数据往前移                                                                            70     {                                                                                                                                                 71         list->data[i]=list->data[i+1];                                                                                                                72     }                                                                                                                                                 73     list->pos--;//数据被删除了,所以要将pos-1                                                                                                         74                                                                                                                                                       75     return num;                                                                                                                                       76 }                                                                                                                                                     77 //在顺序表尾部删除数据                                                                                                                                78 datatype delete_seqList(SeqList* list)                                                                                                                79 {                                                                                                                                                     80     if(list->pos<=0)                                                                                                                                  81     {                                                                                                                                                 82     printf("顺序表中没有数据,删除失败!\n");                                                                                                         83     }                                                                                                                                                 84     list->pos--;                                                                                                                                      85     return list->data[list->pos];                                                                                                                     86 }                                                                                                                                                     87 //根据下标修改数据                                                                                                                                    88 void updata_byid(SeqList* list,int x)                                                                                                                 89 {                                                                                                                                                     90     if(x>=list->pos||x<0)                                                                                                                             91     {                                                                                                                                                 92         printf("该下标非法,修改失败!\n");                                                                                                           93         return;                                                                                                                                       94     }                                                                                                                                                 95     printf("请输入数据>>>\n");                                                                                                                        96     scanf("%d",&list->data[x]);                                                                                                                       97     return;                                                                                                                                           98 }                                                                                                                                                     99 datatype search_byid(SeqList* list,int x)                                                                                                             
100 {                                                                                                                                                     
101     if(x>=list->pos||x<0)                                                                                                                             
102     {                                                                                                                                                 
103         printf("该下标越界!\n");                                                                                                                     
104     }                                                                                                                                                 
105     return list->data[x];                                                                                                                             
106 }                                                                                                                                                     
107 /*                                                                                                                                                    
108  * function:                                                                                                                                          
109  * @param [ in]                                                                                                                                       
110  * @param [out]                                                                                                                                       
111  * @return                                                                                                                                            
112  */                                                                                                                                                   
113 //遍历顺序表                                                                                                                                          
114 void show_seqList(SeqList* list)                                                                                                                      
115 {                                                                                                                                                     
116     int i;                                                                                                                                            
117     if(0==list->pos)                                                                                                                                  
118     {                                                                                                                                                 
119         printf("顺序表中没有数据!\n");                                                                                                               
120     }                                                                                                                                                 
121     for(i=0;i<list->pos;i++)                                                                                                                          
122     {                                                                                                                                                 
123         printf("%d ",list->data[i]);                                                                                                                  
124     }                                                                                                                                                 
125     putchar(10);                                                                                                                                      
126     return;                                                                                                                                           
127 }                                                                                                                                                     
128 void selectdata_seqList(SeqList* list,datatype oldNum,datatype newNum)                                                                                
129 {                                                                                                                                                     
130     int i=0;                                                                                                                                          
131     for(i=0;i<list->pos;i++)                                                                                                                          
132     {                                                                                                                                                 
133         if(list->data[oldNum]==list->data[i])                                                                                                         
134         {                                                                                                                                             
135             list->data[newNum]=list->data[oldNum];                                                                                                    
136         }                                                                                                                                             
137     }                                                                                                                                                 
138     printf("更新完成!\n");                                                                                                                           
139     return;                                                                                                                                           
140                                                                                                                                                       
141 }                                                                                                                                                     
142 int  selectidx_bydata_seqList(SeqList* list,datatype num)                                                                                             
143 {                                                                                                                                                     
144     int i=0;                                                                                                                                          
145     for(i=0;i<list->pos;i++)                                                                                                                          
146     {                                                                                                                                                 
147         if(num==list->data[i])                                                                                                                        
148         {                                                                                                                                             
149             return i;                                                                                                                                 
150         }                                                                                                                                             
151     }                                                                                                                                                 
152     return -1;                                                                                                                                        
153 }                                                                                                                                                     

头文件:

 #ifndef __FUNC_H__                                                              #define __FUNC_H_                                                               #define N 100  //顺序表的容量                                                   typedef int datatype;                                                           typedef struct//由于需要同时返回顺序表及其下标位置,所以定义一个结构体          {                                                                               datatype data[N];    //定义一个顺序表                                       int pos;        //记录下标位置                                              }SeqList;                                                                       SeqList* create_seqList();                                                      void insert_seqList(SeqList* list,datatype num);                                void show_seqList(SeqList* list);                                               datatype delete_seqList(SeqList* list);                                         void insert_byid_seqList(SeqList *list,datatype num,int n);                     datatype delete_byid_seqList(SeqList* list,int x);                              void updata_byid(SeqList* list,int x);                                          datatype search_byid(SeqList* list,int x);                                      int  selectidx_bydata_seqList(SeqList* list,datatype num);                      #endif                                                                          

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

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

相关文章

SpringBoot集成Mqtt发送消息

1. MQTT简介 MQTT是一种物联网消息协议&#xff0c;为Message Queuing Telemetry Transport的缩写&#xff0c;即消息队列传输探测&#xff0c;协议基于发布订阅模式进行通信&#xff0c;有开销低、带宽小、轻量的特点&#xff0c;通常应用在物联网数据采集、移动应用、智能硬…

H5获取手机相机或相册图片两种方式-Android通过webview传递多张照片给H5

需求目的&#xff1a; 手机机通过webView展示H5网页&#xff0c;在特殊场景下&#xff0c;需要使用相机拍照或者从相册获取照片&#xff0c;上传后台。 完整流程效果&#xff1a; 如下图 一、H5界面样例代码 使用html文件格式&#xff0c;文件直接打开就可以展示布局&#…

BGP-OSPF防环机制

一、BGP 防环机制 1、AS内部防环&#xff1a;通过IBGP水平分割&#xff0c;IBGP水平分割的基本思想是 不把从IBGP邻居学到的路由信息发送给其他IBGP邻居&#xff1b; 2、AS间的防环&#xff1a;通过属性AS-PATH来实现&#xff0c; 基本思想是&#xff1a;记录经过的路径&…

【每日一题】2583. 二叉树中的第 K 大层和-2024.2.23

题目: 2583. 二叉树中的第 K 大层和 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。 注意,如果两个节点与根节点的距离相同,则认为它们在同一层。 示…

canvas水波纹效果,jquery鼠标水波纹插件

canvas水波纹效果&#xff0c;jquery鼠标水波纹插件 效果展示 jQuery水波纹效果&#xff0c;canvas水波纹插件 HTML代码片段 <div class"scroll04wrap"><h3>发展历程</h3><div class"scroll04"><p>不要回头&#xff0c;一…

前端工程Bem架构及其封装

文章目录 简介语法在vue3项目中引用sass创建bem.scss文件修改vite.config.tsvue文件中使用结果 这是我学习记录的笔记&#xff0c;如有不正&#xff0c;欢迎补充 简介 首先认识一下什么是bem架构&#xff1f;BEM的意思就是块&#xff08;block&#xff09;、元素&#xff08;e…

【DDD】学习笔记-发布者—订阅者模式

在领域设计模型中引入了领域事件&#xff0c;并不意味着就采用了领域事件建模范式&#xff0c;此时的领域事件仅仅作为一种架构或设计模式而已&#xff0c;属于领域设计模型的设计要素。在领域设计建模阶段&#xff0c;如何选择和设计领域事件&#xff0c;存在不同的模式&#…

nginx-ingress-controller组件中Nginx的版本升级

参考链接&#xff1a;https://blog.csdn.net/qq_22824481/article/details/133761302 https://blog.csdn.net/mengfanshaoxia/article/details/127155020 https://blog.csdn.net/weixin_39961559/article/details/87935873 概要 业务区k…

JAVAEE初阶 JVM(一)

JVM的热门话题 一. JVM中的内存区域划分1.经典笔试题. 二. JVM的类加载机制 一. JVM中的内存区域划分 1.经典笔试题. 二. JVM的类加载机制

wondows10用Electron打包threejs的项目记录

背景 电脑是用的mac&#xff0c;安装了parallels desktop ,想用electron 想同时打包出 苹果版本和windows版本。因为是在虚拟机里安装&#xff0c;它常被我重装&#xff0c;所以记录一下打包的整个过程。另外就是node生态太活跃&#xff0c;几个依赖没记录具体版本&#xff0…

lora网关智慧工厂三色灯安灯状态采集钡铼技术S281

LoRa网关结合钡铼技术S281模块在智慧工厂三色灯安灯状态采集方面具有广泛的应用前景。智慧工厂的安全生产管理对于企业生产经营至关重要&#xff0c;而三色灯安灯是工厂安全生产管理的重要指示灯&#xff0c;通过LoRa无线通信技术和钡铼技术S281模块&#xff0c;可以实现对三色…

android 使用X264编码视频

android 使用X264编码视频 源码刚上传可能审核 源码下载地址 X264对应部分API介绍 初始化x264_param_t _x264_param new x264_param_t;/*** preset是编码速度* 可选项"ultrafast", "superfast", "veryfast", "faster", "fa…

使用 package.json 配置代理解决 React 项目中的跨域请求问题

使用 package.json 配置代理解决 React 项目中的跨域请求问题 当我们在开发前端应用时&#xff0c;经常会遇到跨域请求的问题。为了解决这个问题&#xff0c;我们可以通过配置代理来实现在开发环境中向后端服务器发送请求。 在 React 项目中&#xff0c;我们可以使用 package…

MES系统中的手动排产和自动排产-助力生产效率

企业在排产管理中面临的问题&#xff1a; 大多数的企业在调度排产过程中&#xff0c;都会遇到以下问题。首先是插单非常的多&#xff0c;计划调整困难&#xff0c;会经常性的发生原材料、零部件的备货不足。计划按MRP或库存展示计算出需求后将产生大量工单&#xff0c;这些工单…

《剑指Offer》笔记题解思路技巧优化_Part_6

《剑指Offer》笔记&题解&思路&技巧&优化_Part_6 &#x1f60d;&#x1f60d;&#x1f60d; 相知&#x1f64c;&#x1f64c;&#x1f64c; 相识&#x1f622;&#x1f622;&#x1f622; 开始刷题&#x1f7e1;1.LCR 168. 丑数—— 丑数&#x1f7e2;2. LCR 16…

Kubernetes服务网络Ingress网络模型分析、安装和高级用法

文章目录 1、Ingres简介2、Ingres网络模型分析3、安装Ingress4、使用4.1、搭建测试环境4.2、域名访问4.3、路径重写&#xff08;高级用法&#xff09;4.4、流量限制&#xff08;高级用法&#xff09; 5、总结 1、Ingres简介 Ingress翻译过来是“入口”的意思&#xff0c;也就是…

切换分支时候IDEA提示:workspace associated with branch feature has been restored

切换分支时候IDEA提示&#xff1a;workspace associated with branch feature has been restored 这个消息是指与"feature"分支关联的工作区已经恢复。在Git中&#xff0c;工作区是指你当前正在进行修改和编辑的文件和目录。当你切换分支时&#xff0c;Git会自动将工…

配置docker 支持GPU方法(Nvidia GPU)

参考官方文档&#xff1a; https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html 系统版本&#xff1a;ubuntu 23.04 执行脚本如下&#xff1a; 1.Configure the production repository: curl -fsSL https://nvidia.github.io/lib…

怎么把试卷图片转换成word?这4种方法一看就会

怎么把试卷图片转换成word&#xff1f;在数字化日益盛行的今天&#xff0c;我们常常会面临将纸质试卷或图片中的试卷内容转化为Word文档的需求。无论是为了对试卷内容进行编辑、修改&#xff0c;还是为了在线共享、远程教学&#xff0c;将图片转换为Word文档都成为了至关重要的…

集成TinyMCE富文本编辑器

若依的基础上集成TinyMCE富文本编辑器 前端bootstrap TinyMCE官网链接 TinyMCE所需静态资源下载链接 开源项目-若依链接 将TinyMCE静态资源包放入项目中&#xff1b; 代码引入css&#xff1a; <!-- 引入TinyMCE CSS --><link th:href"{/ajax/libs/tinymce/j…