顺序表增删改查(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
相关文章:
顺序表增删改查(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(l…...
MyBatis Plus中的动态表名实践
随着数据库应用的不断发展,面对复杂多变的业务需求,动态表名的处理变得愈发重要。在 MyBatis Plus(以下简称 MP)这一优秀的基于 MyBatis 的增强工具的支持下,我们可以更便捷地应对动态表名的挑战。本文将深入研究如何在…...
JAVA IDEA 项目打包为 jar 包详解
前言 如下简单 maven 项目,现在 maven 项目比较流行,你还没用过就OUT了。需要打包jar 先设置:点击 File > Project Structure > Artifacts > 点击加号 > 选择JAR > 选择From modules with dependencies 一、将所有依赖和模…...
概率基础——几何分布
概率基础——几何分布 介绍 在统计学中,几何分布是描述了在一系列独立同分布的伯努利试验中,第一次成功所需的试验次数的概率分布。在连续抛掷硬币的试验中,每次抛掷结果为正面向上的概率为 p p p,反面向上的概率为 1 − p 1-p …...
JavaScript的内存管理与垃圾回收
前言 JavaScript提供了高效的内存管理机制,它的垃圾回收功能是自动的。在我们创建新对象、函数、原始类型和变量时,所有这些编程元素都会占用内存。那么JavaScript是如何管理这些元素并在它们不再使用时清理它们的呢? 在本节中,…...
Neo4j导入数据之JAVA JDBC
目录结构 前言设置neo4j外部访问代码整理maven 依赖java 代码 参考链接 前言 公司需要获取neo4j数据库内容进行数据筛查,neo4j数据库咱也是头一次基础,辛辛苦苦安装好整理了安装neo4j的步骤,如今又遇到数据不知道怎么创建,关关难…...
LeetCode 2878.获取DataFrame的大小
DataFrame players: ------------------- | Column Name | Type | ------------------- | player_id | int | | name | object | | age | int | | position | object | | … | … | ------------------- 编写一个解决方案,计算并显示 players 的 行数和列数。 将结…...
索引失效的 12 种情况
目录 一、未使用索引字段进行查询 二、索引列使用了函数或表达式 三、使用了不等于(! 或 <>)操作符 四、LIKE 操作符的模糊查询 五、对索引列进行了数据类型转换 六、使用 OR 连接多个条件 七、表中数据量较少 八、索引列上存在大量重复值…...
Spring及工厂模式概述
文章目录 Spring 身世什么是 Spring什么是设计模式工厂设计模式什么是工厂设计模式简单的工厂设计模式通用的工厂设计 总结 在 Spring 框架出现之前,Java 开发者使用的主要是传统的 Java EE(Java Enterprise Edition)平台。Java EE 是一套用于…...
运维SRE-19 网站Web中间件服务-http-nginx
Ans自动化流程 1.网站集群核心协议:HTTP 1.1概述 web服务:网站服务,网站协议即可. 协议:http协议,https协议 服务:Nginx服务,Tengine服务....1.2 HTTP协议 http超文本传输协议,负责数据在网站…...
C语言—自定义(构造)类型
2.20,17.56 1.只有当我们使用结构体类型定义变量/结构体数组,系统才会为结构体的成员分配内存空间,用于存储对应类型的数据 2.strct 结构体 一起作为结构体类型标识符 嘿嘿暂时先这样,我会回来改的1、定义一个表示公交线路的结构体,要…...
ArcgisForJS如何实现添加含图片样式的点要素?
文章目录 0.引言1.加载底图2.获取点要素的坐标3.添加含图片样式的几何要素4.完整实现 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。本文在ArcGIS For JavaScript中使用Graphic对象来创建包含图片样式的点要素。 …...
C#之WPF学习之路(2)
目录 控件的父类 DispatcherObject类 DependencyObject类 DependencyObject 类的关键成员和方法 Visual类 Visual 类的主要成员和方法 UIElement类 UIElement 类的主要成员和功能 FrameworkElement类 FrameworkElement 类的主要成员和功能 控件的父类 在 WPF (Windo…...
胶原抗体诱导小鼠关节炎模型
胶原诱导性关节炎小鼠(CIA)作为人类类风湿关节炎模型应用广泛,但CIA引起的关节炎起病比较缓慢,造模周期较长,一般为6-8周(1-12)。Chondrex公司已开发出单一种单克隆抗体合剂诱导的小鼠关节炎模型(CAIA),明显缩短了造模…...
集百家所长的开放世界游戏,艾尔莎H311-PRO带你玩转《幻兽帕鲁》
随着近几年开放世界游戏热潮的兴起,如今这类游戏可以说是像雨后春笋般不断推出,比如《幻兽帕鲁》就是近期非常火热的一个代表,它不仅集合了生存、建造、宠物养成等多种元素,而且可爱的卡通画风格更是老少皆宜。那么,这…...
机器人内部传感器阅读笔记及心得-位置传感器-旋转变压器、激光干涉式编码器
旋转变压器 旋转变压器是一种输出电压随转角变化的检测装置,是用来检测角位移的,其基本结构与交流绕线式异步电动机相似,由定子和转子组成。 旋转变压器的原理如图1所示,定子相当于变压器的一次侧,有两组在空间位置上…...
深度学习的学习笔记帖子2
人脸数据集的介绍: https://zhuanlan.zhihu.com/p/362356480 https://blog.csdn.net/bjbz_cxy/article/details/122210641 CASIAWebFace人脸数据集等的github: https://github.com/deepinsight/insightface/blob/master/recognition/datasets/README.md…...
【机器学习学习脉络】
机器学习学习脉络 基础知识 数学基础 线性代数概率论与数理统计微积分最优化理论 编程基础 Python编程语言数据结构与算法软件工程原则 计算机科学基础 操作系统网络通信数据库系统 机器学习概论 定义与发展历程机器学习的主要任务和应用领域基本术语和概念 监督学习 线…...
golang命令行工具gtcli,实现了完美集成与结构化的gin脚手架,gin-restful-api开箱即用
关于gtools golang非常奈斯,gin作为web框架也非常奈斯,但我们在开发过程中,前期搭建会花费大量的时间,且还不尽人意。 为此我集成了gin-restful-api的模板gin-layout,还有脚手架一键生成项目。 集成相关 ginviperz…...
Qt 事件
1. 事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 2. 事件和信号 事件与信号并不相同,比如我们使用鼠标点击了一下界面上的按钮,那么就会产生…...
Perplexity真实岗位薪资曝光,17城对比+职级换算公式,HR不会告诉你的薪酬锚点
更多请点击: https://codechina.net 第一章:Perplexity真实岗位薪资曝光,17城对比职级换算公式,HR不会告诉你的薪酬锚点 一线数据来源与采样逻辑 本章薪资数据源自2024年Q2匿名技术社区(如Levels.fyi、Blind、脉脉脱…...
从‘秦皇岛今天晴空万里’到HMM:一文搞懂NLP分词中的序列标注到底在标什么
从天气报告到智能分词:解码序列标注在NLP中的魔法 秦皇岛的晴空万里不仅是气象术语,更是理解自然语言处理(NLP)中序列标注技术的绝佳入口。当我们看到"秦皇岛今天晴空万里"这行文字时,人脑能瞬间将其分解为有意义的词汇单元&#x…...
观察Taotoken用量看板如何清晰展示各项目与模型的Token消耗明细
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何清晰展示各项目与模型的Token消耗明细 对于依赖大模型API进行开发的团队而言,成本透明与资源…...
Qt无边框窗口毛玻璃太常见?试试保留原生标题栏的‘高级’模糊方案(附Widget跟随层实现代码)
Qt保留原生标题栏的毛玻璃效果实现方案 在Qt开发中,实现毛玻璃效果通常需要移除窗口边框,但这会牺牲系统原生窗口管理功能。本文将介绍一种创新方案,通过创建跟随主窗口的子Widget来实现毛玻璃效果,同时保留原生标题栏和边框。 1.…...
Godot-MCP终极指南:如何用AI助手5倍提升Godot游戏开发效率
Godot-MCP终极指南:如何用AI助手5倍提升Godot游戏开发效率 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP 在…...
Transformer时代回头看:Layer Norm为何成了BERT、GPT的“标配”组件?
Transformer时代回头看:Layer Norm为何成了BERT、GPT的“标配”组件? 在2017年Transformer架构横空出世之前,深度学习领域已经见证了批量归一化(Batch Normalization)在计算机视觉任务中的巨大成功。然而当Transformer…...
单片机代码优化实战:从数据类型到算法与数据结构的效率提升
1. 项目概述:为什么单片机代码需要“斤斤计较”?如果你是从PC端或者服务器端开发转过来的朋友,第一次接触单片机编程,可能会觉得处处掣肘。在PC上,我们习惯了动辄几个G的内存,上百G的硬盘,CPU频…...
RVC-WebUI终极指南:5步掌握AI语音克隆与声音转换技术
RVC-WebUI终极指南:5步掌握AI语音克隆与声音转换技术 【免费下载链接】rvc-webui liujing04/Retrieval-based-Voice-Conversion-WebUI reconstruction project 项目地址: https://gitcode.com/gh_mirrors/rv/rvc-webui RVC-WebUI是一个基于检索式语音转换技术…...
阿里Sophix热更新实战:从加固App打包到补丁发布的完整避坑指南
阿里Sophix热更新深度实践:加固场景下的全链路解决方案 在移动应用快速迭代的今天,热修复技术已经成为保障应用稳定性的关键手段。阿里Sophix作为业界领先的热修复方案,以其高兼容性和稳定性赢得了众多开发团队的青睐。然而,当应用…...
【免费下载】 STM32Cube_FW_F4_V1.16.0 固件库
STM32Cube_FW_F4_V1.16.0 固件库 【下载地址】STM32Cube_FW_F4_V1.16.0固件库 本仓库提供了STM32CubeFW_F4_V1.16.0固件包的直接下载资源。STM32Cube是一个完整的软件平台,旨在支持STMicroelectronics(意法半导体)的STM32系列微控制器。这个特…...
