顺序表的使用,对数据的增删改查
主函数: 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;}
运行截图:

相关文章:
顺序表的使用,对数据的增删改查
主函数: 3.c #include "3.h"//头文件调用 SqlListptr sql_cerate()//创建顺序表函数 {SqlListptr ptr(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULLptr){printf("创建失败\n");return NULL;//如果没有申请成功ÿ…...
XDMA与FPGA:高效数据传输的艺术
XDMA与FPGA:高效数据传输的艺术 引言 在现代计算系统中,数据传输的效率直接影响系统的整体性能。特别是在涉及到高速数据处理的领域,如高性能计算(HPC)、实时视频处理和大数据分析等,如何高效地在主机与F…...
#思科模拟器通过服务配置保障无线网络安全Radius
演示拓扑图: 搭建拓扑时要注意: 只能连接它的Ethernet接口,不然会不通 MAC地址绑定 要求 :通过配置MAC地址过滤禁止非内部员工连接WiFi 打开无线路由器GUI界面,点开下图页面,配置路由器无线网络MAC地址过…...
浅谈Python库之pillow
一、pillow的介绍 Pillow是Python Imaging Library (PIL) 的一个分支,它是一个强大的图像处理库,用于打开、操作和保存许多不同图像文件格式。Pillow提供了广泛的文件格式支持、强大的图像处理能力和广泛的文件格式兼容性。它是PIL的一个友好的分支&…...
Android通过okhttp下载文件(本文案例 下载mp4到本地,并更新到相册)
使用步骤分为两步 第一步导入 okhttp3 依赖 第二步调用本文提供的 utils 第一步这里不做说明了,直接提供第二步复制即用 DownloadUtil 中 download 为下载文件 参数说明 这里主要看你把 destFileName 下载文件名称定义为什么后缀,比如我定义为 .mp4 下…...
计算机网络从诞生之初到至今的发展历程
前言 "上网",相信大家对这个动词已经不再陌生,网 通常指的是网络;在 2024 年的今天,网络已经渗透到了每个人的生活中,成为其不可或缺的一部分;你此时此刻在看到我的博客,就是通过网络…...
Kudu 源码编译-aarch架构 1.17.1版本
跟着官方文档编译 第一个问题:在make阶段时会报的问题: kudu/src/kudu/util/block_bloom_filter.cc:210:3: error: ‘vst1q_u32_x2’ was not declared in this scope kudu/src/kudu/util/block_bloom_filter.cc:436:5: error: ‘vst1q_u8_x2’ was no…...
SEC_ASA 第二天作业
拓扑 按照拓扑图配置 NTP,Server端为 Outside路由器,Client端为 ASA,两个设备的 NTP传输使用MD5做校验。(安全 V4 LAB考点) 提示:Outside路由器作为 Server端要配置好正确的时间和时区,ASA防…...
操作系统(5)进程
一、定义与特点 定义:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 特点: 动态性:进程是动态创建的,有它自身的生命周期,…...
6_Sass 选择器函数 --[CSS预处理]
Sass 提供了一系列的选择器函数,用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则,并且可以减少重复代码。以下是几个常用的选择器函数及其用法: 1. selector-append($selector1, $selector2...) selector-append($select…...
考研数学【线性代数基础box(数二)】
本文是对数学二线性代数基础进行总结,一些及极其简单的被省略了,代数的概念稀碎,不如高数关联性高,所以本文仅供参考,做题请从中筛选! 本文为初稿,后面会根据刷题和自己的理解继续更新 第一章…...
ModbusTcp获取数据
ModbusTcp获取数据 记录一个用 pymodbus 库来获取数据的代码。 注意: 1.读取寄存器地址是16进制的。2.大小端转换通过代码知道原理。读取数据时,切记频率别太高,否则会出现连接被关闭问题。 from pymodbus.client.sync import ModbusTcpCli…...
java 知识点:注解及使用
注解 大多数时候,我们会使用注解,而不是自定义注解。注解给谁用?编译器 、给解析程序用注解不是程序的一部分,可以理解为注解就是一个标签 主要的作用有以下四方面: 生成文档,通过代码里标识的元数据生成…...
AI预测体彩排3采取888=3策略+和值012路+胆码+通杀1码测试12月13日升级新模型预测第156弹
经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大…...
faiss数据库检索不稳定
faiss数据检索不稳定 def build_faiss_index(embeddings_vector):dim np.shape(embeddings_vector)[-1]index faiss.index_factory(dim, HNSW64, faiss.METRIC_INNER_PRODUCT)index.add(embeddings_vector)return index这个代码不稳定,构建的索引召回结果可能会不…...
Vue技术中参数传递:Props与事件的实践指南
在Vue.js中,组件间的参数传递是构建动态和交互式应用的核心。本文将深入探讨如何通过Props和事件($emit)在Vue组件间进行参数传递,并提供代码示例。 Props传递数据 Props是Vue中组件间传递数据的一种方式,它允许父组…...
C++【基础】 ---- 快速入门 C++
文章目录 前言一、有关 const 区分二、有关命名空间三、有关输入和输出四、有关缺省参数四、函数重载总结 前言 本篇文章笔者将会对 C 这么语言中必须的基础部分进行简单讲解 , 同时也作为笔者自我复习使用, 这部分是初学C 的学者不可绕过的部分 , 希望学者认真理解 ,认真领会…...
Neo4j+Neovis+Vue3:前端连接数据库渲染
Neovis(github):https://github.com/neo4j-contrib/neovis.js Neovis配置文档:neovis.js (neo4j-contrib.github.io) 一、安装Neo4j 参考文章:neo4j下载安装配置步骤-CSDN博客 二、Neovis使用 1.npm引入 ?npm ins…...
React 18
文章目录 React 18自动批处理并发特性Suspense 组件增强新 HookscreateRoot API 替代 ReactDOM.renderStrict Mode严格模式服务器端渲染改进性能优化 React 18 React 18 引入了一系列新特性和改进,旨在提升性能、改善用户体验,并简化开发流程。以下是 R…...
Java:集合(List、Map、Set)
文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
