顺序表的使用,对数据的增删改查

主函数: 3.c

#include "3.h"//头文件调用
SqlListptr sql_cerate()//创建顺序表函数
{SqlListptr ptr=(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULL==ptr){printf("创建失败\n");return NULL;//如果没有申请成功,返回空,避免野指针}printf("创建成功\n");return ptr;//返回地址ptr->len=0;//len置为零bzero(ptr->date,sizeof(ptr->date));//对内容置零
}int emtp(SqlListptr ptr)//判空
{if(NULL==ptr){printf("判空失败\n");return -1;}return ptr->len==0;
}int full(SqlListptr ptr)//判满
{if(NULL==ptr){printf("判满失败\n");return -1;}return ptr->len==max;
}
int add(SqlListptr ptr,Date_Type  a)//增加
{if(NULL==ptr||full(ptr)){printf("增加失败\n");return 0;}ptr->date[ptr->len]=a;ptr->len++;return 1;}
void show(SqlListptr ptr)//打印
{if(NULL==ptr||emtp(ptr)){printf("输出失败\n");return ;}for(int i=0;i<ptr->len;i++){printf("%d ",ptr->date[i]);}putchar(10);
}
void  insert(SqlListptr ptr,int n,Date_Type a )//任意位置插入
{if(NULL==ptr||full(ptr)||n>ptr->len+1){printf("插入失败\n");return ;}for(int i=0;i<ptr->len-n+1;i++){ptr->date[ptr->len-i]=ptr->date[ptr->len-1-i];}ptr->date[n-1]=a;ptr->len++;
}
void anydel(SqlListptr ptr ,int n)//任意位置删除
{if(NULL==ptr||emtp(ptr)||n>ptr->len){printf("删除失败\n");return;}for(int i=0;i<ptr->len-n;i++){ptr->date[n-1+i]=ptr->date[n+i];}ptr->len--;
}void change(SqlListptr ptr ,int n,Date_Type a)//任意修改
{if(NULL==ptr||emtp(ptr)||n>ptr->len){printf("修改失败\n");return ;}ptr->date[n-1]=a;
}
void search(SqlListptr ptr,int n)//按位查找
{if(NULL==ptr||emtp(ptr)||n>ptr->len){printf("查找失败\n");return;}printf("%d\n",ptr->date[n-1]);
}int SearchValue(SqlListptr ptr,Date_Type n)//按值查找
{if(NULL==ptr||emtp(ptr)){return 0;}int flag=1;for(int i=0;i<ptr->len;i++){if(n==ptr->date[i]){return i;flag=0;}}if(flag==0){printf("没有该数据\n");}}
void deduplicate(SqlListptr ptr)//去重
{if(NULL==ptr||ptr->len<2){printf("去重失败\n");}for(int i=0;i<ptr->len;i++){for(int j=i+1;j<ptr->len;j++){if(ptr->date[i]==ptr->date[j]){anydel(ptr,j+1);j--;}}}
}
void myfree(SqlListptr *ptr)//销毁,释放内存
{if(NULL==ptr){printf("销毁失败\n");}free(*ptr);printf("销毁成功\n");ptr=NULL;
}

头文件 3.h

#ifndef __3_h__//避免重复引用
#define __3_h__
#include<stdlib.h>//堆空间申请函数头文件
#include<string.h>
#include<stdio.h>//输入输出函数头文件
#define max 30//
typedef int Date_Type;//重定义typedef struct sequence//重定义
{Date_Type date[max];int len;
}SqlList,*SqlListptr//重定义名
;
SqlListptr sql_cerate();//函数声明int emtp(SqlListptr ptr);//判空int full(SqlListptr ptr);//判满int add(SqlListptr ptr,int a);//增加void show(SqlListptr ptr);//打印void insert(SqlListptr ptr,int n,Date_Type a);//任意插void anydel(SqlListptr ptr ,int n);//任意删void change(SqlListptr ptr,int n,Date_Type a);//按位置修改void search(SqlListptr ptr,int n);//按位置查找int  SearchValue(SqlListptr ptr,Date_Type n);//按数值查找void deduplicate(SqlListptr ptr);//去重void myfree(SqlListptr *ptr);//销毁,释放内存
#endif

测试函数main:4.c

include "3.h"//头文件引用
int main()
{
SqlListptr s=sql_cerate();//函数调用add(s,10);add(s,20);//一=依次尾插add(s,30);add(s,40);add(s,30);show(s);//打印int b=0;int flag=1;while(flag)
{printf("*************************************************************\n");printf("1,任意插入\t\t2.任意删除\t\t3.任意修改\n");printf("4.按下标查找\t\t5.按数值查找\t\t6.去重\n");printf("7.退出\t\t8.销毁文件\n");printf("**************************************************************\n");printf("请输入功能:\n");scanf("%d",&b);
switch(b){
case 1:{	printf("请输入要在什么位置传值:");int n1=0;scanf("%d",&n1);insert(s,n1,60);//任意插show(s);//打印break;}
case 2:{printf("请输入要在什么位置删除:");int n2=0;scanf("%d",&n2);anydel(s,n2);//任意删show(s);//打印break;}
case 3:{printf("请输入要在什么位置修改:");int n3=0;scanf("%d",&n3);change(s,n3,66);show(s);break;}
case 4:{printf("请输入需要查哪一个:");int n4=0;scanf("%d",&n4);search(s,n4);break;}
case 5:{printf("请输入需要查哪一个:");int n5=0;int a;scanf("%d",&n5);a=SearchValue(s,n5);printf("该数据第为%d个数据\n",a);break;}
case 6:{deduplicate(s);//去重show(s);break;}
case 7:{flag=0;//置零,跳出循环}case 8:{myfree(&s);//调用销毁函数,释放内存s=NULL;}}}
return 0;}

运行截图:

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

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

相关文章

5G中的随机接入过程可以不用收RAR?

有朋友提到了一种不用接收RAR的RA过程&#xff0c;问这个是怎么回事。其实在刚刚写过的LTM cell switch篇章中就有提到&#xff0c;这里把所有相关的内容整理如下。 在RACH-less LTM场景&#xff0c;在进行LTM cell switch之前就要先知道target cell的TA信息&#xff0c;进而才…

git 导出某段时间修改的文件 windows

第一步&#xff1a;列出两次commitID之间的文件变动 git diff oldid newid --name-only// 例如 git diff 4a886c57a8b5611a2abcfcd120461c2e92f7029a HEAD --name-only 4a886c57a8b5611a2abcfcd120461c2e92f7029a 代表之前 HEAD 代表最新或者换成某次commitID 例如&#xf…

Qt 联合Halcon配置

文章目录 配置代码窗口绑定 配置 选择添加库 选择外部库 LIBS -LC:/Program Files/MVTec/HALCON-17.12-Progress/lib/x64-win64/ LIBS -lhalconcpp\-lhdevenginecpp\-lhalconINCLUDEPATH C:/Program Files/MVTec/HALCON-17.12-Progress/include DEPENDPATH C:/Program Fil…

new URL(`../assets/images/${name}`, import.meta.url).href

背景&#xff1a; 文章讲述了Vite框架中关于资源文件&#xff08;如图片&#xff09;在默认配置下&#xff0c;如何正确处理开发环境和打包后的不同引用方式。重点介绍了使用import.meta.url和new URL() 来动态获取并处理静态资源URL的方法&#xff0c;以及注意事项&#xff0…

Tiptap,: 富文本编辑器入门与案例分析

Tiptap 是一个现代的富文本编辑器&#xff0c;基于 ProseMirror 打造&#xff0c;旨在提供一个灵活且功能强大的文本编辑解决方案。它具有开箱即用的能力&#xff0c;同时也允许开发者根据业务需求进行高度定制化扩展。与传统的富文本编辑器相比&#xff0c;Tiptap 提供了更精细…

Java基础学习:java常用启动命令

一、java -jar 1、系统属性传递 使用形式&#xff1a;java -DpathD:\jacoco -jar 获取方式&#xff1a;System.getProperties() 2、系统参数传递 使用形式&#xff1a;java -jar application.jar --jacocoPathD:\tomcat 获取方式&#xff1a;通过启动方法入口main的参数arg…

负载均衡oj项目:介绍

目录 项目介绍 项目演示 项目介绍 负载均衡oj是一个基于bs模式的项目。 用户使用浏览器向oj模块提交代码&#xff0c;oj模块会在所有在线的后端主机中选择一个负载情况最低的主机&#xff0c;将用户的代码提交给该主机&#xff0c;该主机进行编译运行&#xff0c;将结果返回…

gateway 微服务的入口-笔记

本文属于b站图灵课堂springcloud笔记系列。讲的好还不要钱&#xff0c;值得推荐。 为什么需要API网关&#xff1f; 客户端多次请求不同的微服务&#xff0c;会增加客户端代码和配置的复杂性&#xff0c;维护成本比价高认证复杂&#xff0c;每个微服务可能存在不同的认证方式&…

vue2+element-ui实现多行行内表格编辑

效果图展示 当在表格中点击编辑按钮时:点击的行变成文本框且数据回显可以点击确定按钮修改数据或者取消修改回退数据: 具体实现步骤 1. 行数据定义编辑标记 行数据定义编辑标记 当在组件中获取到用于表格展示数据的方法中,针对每一行数据添加一个编辑标记 this.list.f…

安卓主板_MTK联发科android主板方案

在当前智能设备的发展中&#xff0c;安卓主板的配置灵活性和性能优化显得尤为重要。安卓主板的联发科方案&#xff0c;在芯片上&#xff0c;搭载联发科MTK6761、MT8766、MT6765、MT6762、MT8768、MT8390、MTK8370以及MT8788等型号&#xff0c;均基于64位的四核或八核架构设计。…

如何破解“不会写作”的烦恼

在人生的诸多烦恼中&#xff0c;有一种烦恼或许不那么显眼&#xff0c;却常常如影随形&#xff0c;让人倍感困扰——那就是不会写作的烦恼。这不仅仅是对那些以写作为生的人而言&#xff0c;对于每一个需要在学习、工作或生活中以文字表达思想、情感的人来说&#xff0c;不会写…

虚幻5描边轮廓材质

很多游戏内都有这种描边效果&#xff0c;挺实用也挺好看的&#xff0c;简单复刻一下 效果演示&#xff1a; Linethickness可以控制轮廓线条的粗细 这样连完&#xff0c;然后放到网格体细节的覆层材质上即可 可以自己更改粗细大小和颜色

【JavaEE】网络(2)

一、网络编程套接字 1.1 基础概念 【网络编程】指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff1b;当然&#xff0c;我们只要满足进程不同就行&#xff0c;所以即便是同一个主机&#xff0c;只要是不同进程&#xff0c;基于网络来传…

RANS(Reynolds-Averaged Navier-Stokes) 湍流模型类型

RANS&#xff08;Reynolds-Averaged Navier-Stokes&#xff09; 湍流模型有多种不同的类型&#xff0c;除了标准的 kkk-ω 湍流模型&#xff0c;还有其他一些常用的湍流模型。RANS 模型的核心思想是对 Navier-Stokes 方程进行 雷诺平均&#xff0c;通过将流动场的瞬时变量分解为…

vue绕过rules自定义编写动态校验

今天犯了个低级错误&#xff0c;虽然走了很多弯路&#xff0c;但这个过程还是值得记录一下 例子如下&#xff0c;有两个输入框&#xff1a; 第一个是套餐选择下拉框&#xff0c;可以下拉选择三个内容 第二个要根据上面的套餐选择三个选项来决定怎么显示&#xff0c;使用v-if&…

数字化招聘系统如何帮助企业实现招聘效率翻倍提升?

众所周知&#xff0c;传统的招聘方式已经难以满足现代企业对人才的需求&#xff0c;而数字化招聘系统的出现&#xff0c;为企业提供了全新的解决方案。通过数字化招聘系统&#xff0c;企业可以自动化处理繁琐的招聘流程&#xff0c;快速筛选合适的候选人&#xff0c;从而大幅提…

短视频矩阵源码开发部署全流程解析

在当今的数字化时代&#xff0c;短视频已成为人们娱乐、学习和社交的重要方式。短视频矩阵系统的开发与部署&#xff0c;对于希望在这一领域脱颖而出的企业和个人而言&#xff0c;至关重要。本文将详细阐述短视频矩阵源码的开发与部署流程&#xff0c;并附上部分源代码示例&…

关闭WPS在线功能资源和功能推荐

Kingsoft\WPS Office\12.1.0.18912\office6 选择 【高级】 点击 【确定】

Polars数据聚合与旋转实战教程

在这篇博文中&#xff0c;我们的目标是解决数据爱好者提出的一个常见问题&#xff1a;如何有效地从Polars DataFrame中创建汇总视图&#xff0c;以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…

2024154读书笔记|《带着诗歌上街去》——我不长叶子,不开花,也不必要什么结果

2024154读书笔记|《带着诗歌上街去》——我不长叶子&#x1f33f;&#xff0c;不开花&#x1f33c;&#xff0c;也不必要什么结果 《带着诗歌上街去》作者隔花人&#xff0c;作者很有巧思&#xff0c;在拍摄的照片上做诗&#xff0c;诗不是很有感觉&#xff0c;但是在墙上、风景…