数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

头文件:head.h

#ifndef __HEAD_H__
#define __HEAD_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 20enum num {success,false=-1};typedef int datatype;typedef struct
{int len;datatype data[MAXSIZE];
}Sqlist;Sqlist* create_sqlist();int insert(Sqlist* list,datatype element);void show(Sqlist *list);int tail_delete(Sqlist *list);int add_insert(Sqlist *list,int sub,datatype element);int delete_insert(Sqlist *list,int sub);int change_list(Sqlist *list,int sub,datatype element);void find(Sqlist *list,int sub);int find_data(Sqlist* list,datatype element);void delete_data(Sqlist* list,datatype element);void change_data(Sqlist* list,datatype element);
void del_double(Sqlist* list);
void swap(Sqlist* list);
void choice_swap(Sqlist* list);
#endif

测试文件:test.c

#include"head.h"//创建顺序表
Sqlist * create_sqlist()
{Sqlist *list = (Sqlist*)malloc(sizeof(Sqlist));if(NULL == list){printf("创建失败!");return NULL;}list->len=0;memset(list->data,0,sizeof(list->data));return list;
}//尾插
int insert(Sqlist* list,datatype element)
{if(NULL ==list||list->len==MAXSIZE){printf("插入失败");return false;}list->data[list->len]=element;list->len++;return success;
}//展示顺序表
void show(Sqlist *list)
{if(NULL==list ||list->len==0){printf("false");return ;}for(int i=0;i<list->len;i++){printf("%d\t",list->data[i]);}putchar(10);
}//尾删
int tail_delete(Sqlist *list)
{if(NULL==list||list->len==0){printf("删除失败");return false;}list->data[list->len-1]=0;list->len--;return success;
}//给定下标插入数据
int add_insert(Sqlist *list,int sub,datatype element)
{if(NULL==list||list->len==MAXSIZE||sub<0||sub>list->len){printf("插入失败\n");return false;}for(int i=list->len-1;i>=sub;i--){list->data[i+1]=list->data[i];}list->data[sub]=element;list->len++;return success;
}//给定下标删除数据
int delete_insert(Sqlist *list,int sub)
{if(NULL==list||sub<0||sub>=list->len||list->len==0){printf("删除失败\n");return false;}for(int i=sub+1;i<list->len;i++){list->data[i-1]=list->data[i];}list->len--;return success;
}//给定下标修改数据
int change_list(Sqlist *list,int sub,datatype element)
{if(NULL==list ||sub<0||sub>=list->len||list->len==0){printf("修改失败\n");return false;}list->data[sub]=element;return success;
}//给定下标查找数据
void find(Sqlist *list,int sub)
{if(NULL==list ||sub<0||sub>=list->len||list->len==0){printf("查找失败\n");return ;}printf("%d\n",list->data[sub]);
}//按元素元素查找
int find_data(Sqlist* list,datatype element)
{if(NULL==list||list->len==0){printf("查找失败\n");return false;}for(int i=0;i<list->len;i++){if(list->data[i]==element){return i;}}
}//按元素删除
void delete_data(Sqlist* list,datatype element)
{int j=find_data(list,element);delete_insert(list,j);
}//按元素修改
void change_data(Sqlist* list,datatype element)
{int j=find_data(list,element);printf("请输入修改的数据:");int data;scanf("%d",&data);change_list(list,j,data);
}//去重
void del_double(Sqlist* list)
{if(NULL==list||list->len==0||list->len==1){printf("去重失败\n");return;}for(int i=0;i<list->len;i++){for(int j=i+1;j<list->len;j++){if(list->data[i]==list->data[j]){delete_insert(list,j);j--;}}}
}//冒泡排序
void swap(Sqlist* list)
{int t;if(NULL==list||list->len==0){printf("排序失败\n");return;}for(int i=0;i<list->len-1;i++){for(int j=0;j<list->len-1-i;j++){if(list->data[j]<list->data[j+1])t=list->data[j];list->data[j]=list->data[j+1];list->data[j+1]=t;}}
}//选择排序
void choice_swap(Sqlist* list)
{int t;int i;int min_index;if(NULL==list||list->len==0){printf("排序失败\n");return;}for(i=1;i<list->len;i++){min_index=i-1;for(int j=i;j<list->len;j++){if(list->data[min_index]>list->data[j]){min_index=j;}}if(min_index!=i-1){t=list->data[min_index];list->data[min_index]=list->data[i-1];list->data[i-1]=t;}}
}

主文件:main.c

#include"head.h"int main(int argc, const char *argv[])
{Sqlist* list=create_sqlist();int n;datatype element;printf("请输入插入几个数:");scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&element);insert(list,element);}show(list);tail_delete(list);show(list);int sub;printf("请输入添加数据的下标:");scanf("%d",&sub);printf("请输入添加的数据:");scanf("%d",&element);add_insert(list,sub,element);show(list);printf("请输入删除的下标:");scanf("%d",&sub);delete_insert(list,sub);show(list);printf("请输入修改的下标:");scanf("%d",&sub);printf("请输入修改的数据:");scanf("%d",&element);change_list(list,sub,element);show(list);printf("请输入查找的下标:");scanf("%d",&sub);find(list,sub);//按值查找printf("请输入要查找的值:");scanf("%d",&element);int j=find_data(list,element);printf("要查找的值的下标为:%d\n",j);//按值删除printf("请输入要删除的值:");scanf("%d",&element);delete_data(list,element);show(list);//按值修改	printf("请输入要修改的值:");scanf("%d",&element);change_data(list,element);show(list);//去重del_double(list);printf("去重后的数据为:");show(list);//冒泡排序swap(list);printf("降序后的结果为:");show(list);//选择排序choice_swap(list);printf("升序后的结果为:");show(list);return 0;
}

运行结果:

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

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

相关文章

IDEA集成DeepSeek

引言 随着数据量的爆炸式增长&#xff0c;传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术&#xff0c;凭借其强大的语义理解与深度学习能力&#xff0c;正在改变搜索领域的游戏规则。 对于 Java 开发者而言&#xff0c;将 DeepSeek 集成…

2025.2.16

Web [GDOUCTF 2023]泄露的伪装&#xff1a; 点进去看就是装神弄鬼&#xff0c;那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下&#xff1a;使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…

WPF的Prism框架的使用

安装Prism.DryIoc库&#xff1a; Prism的区域和模块化&#xff1a; 一个区域可以显示一个用户控件 一个模块就是一个项目&#xff0c;也就是一个类库 动态切换用户控件的案例&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition Height"auto"…

S4D480 S4HANA 基于PDF的表单打印

2022年元旦的笔记草稿 SAP的表单打印从最早的SAPScripts 到后来的SMARTFORM&#xff0c;步入S4时代后由于Fiori的逐渐普及&#xff0c;更适应Web的Adobe Form成了SAP主流output文件格式。 目录 一、 基于PDF表单打印系统架构Interface 接口Form 表单ContextLayout 二、表单接…

chrome://version/

浏览器输入&#xff1a; chrome://version/ Google浏览器版本号以及安装路径 Google Chrome131.0.6778.205 (正式版本) &#xff08;64 位&#xff09; (cohort: Stable) 修订版本81b36b9535e3e3b610a52df3da48cd81362ec860-refs/branch-heads/6778_155{#8}操作系统Windows…

【Kubernetes】k8s 部署指南

1. k8s 入门 1.1 k8s 简介 需要最需要明确的就是&#xff1a;kubernetes&#xff08;简称 k8s &#xff09; 是一个 容器编排平台 &#xff0c;换句话说就是用来管理容器的&#xff0c;相信学过 Docker 的小伙伴对于容器这个概念并不陌生&#xff0c;打个比方&#xff1a;容器…

【Python】Python入门——基础语法及顺序语句

Python入门——基础语法及顺序语句 官方文档地址&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.htmlPython 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语…

在使用 uni.getLocation 步骤和一些坑

1.使用前需要去微信小程序申请开通wx.getLocation 获取当前位置的api (不申请上线之后会使用不了)&#xff0c;申报资料的话我让ai帮我写的&#xff0c;说一下使用场景弄几张图片就可以了 地址 &#xff1a; 小程序 2.第二个需要配置域名 具体申请腾讯地图的方法参考 &…

Docker高级篇

1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…

Java中对象序列化机制的优化研究

Java中对象序列化机制的优化研究 对象序列化&#xff08;Serialization&#xff09;是Java编程中一种非常重要的机制&#xff0c;它允许将对象的状态转换为字节流&#xff0c;从而方便存储或网络传输。然而&#xff0c;Java的默认序列化机制虽然功能强大&#xff0c;但在性能、…

wordpress资讯类网站整站打包

wordpress程序&#xff0c;内置了价值499元的模板.但是有了模板没有全自动采集相信大多数人都搞不懂&#xff0c;目录那么多&#xff0c;全靠原创几乎是不可能的事情&#xff0c;除非你是大公司&#xff0c;每人控制一个板块&#xff0c; 这套源码里面最有价值的应该是这个采集…

【深度解析】图解Deepseek-V3模型架构-混合专家模型(MoE)

一、引言 最近非常火爆的DeepSeek-V3模型&#xff0c;是一个包含6710亿总参数的强大混合专家模型&#xff08;MoE&#xff09;&#xff0c;其中每个token激活370亿参数。该模型在DeepSeek-V2验证有效的核心架构基础上&#xff0c;采用多头潜在注意力&#xff08;MLA&#xff0…

hive:分区>>静态分区,动态分区,混合分区

分区表 使用场景&#xff1a;数据量庞大且经常用来做查询的表 特点&#xff1a;将数据分别存储到不同的目录里 优点&#xff1a;避免全盘扫描&#xff0c;提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列&#xff0c;而 nonstr…

React进阶之React核心源码解析(一)

React核心源码解析 react 特点CPU卡顿IO 卡顿 新老 react 架构对比v15v16.8Scheduler 调度器Reconciler 协调器 React fiber原理更新dommount 构建过程 render阶段 — scheduler reconcilerreact源码解析react-domreact-dom/src/client/ReactDOMRoot.js react-reconcilerreact-…

ubuntu20.04连接airpods pro2

youtub视频解决方法&#xff1a;Setup your AirPods Pro with Linux (Ubuntu w/Mic fix) 重要步骤1&#xff0c; sudo apt-get update sudo apt-get install pulseaudio sudo apt-get upgrade pluseaudio重要步骤2&#xff0c; sudo vim /etc/bluetooth/main.confsudo /ect/…

sqli_labs_master Less-8 时间盲注,boolen盲注 获取数据库中的表、列

获取当前数据库名 import requestsdef inject_database(url):namemax_length20 # 假设数据库名称最大长度为20# ASCII范围&#xff1a;数字、字母、下划线&#xff08;_&#xff09;low{a: 97, z: 122, A: 65, Z: 90, 0: 48, 9: 57, _: 95}high{97: a, 122: z, 65: A, 90: Z,…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_ssl_init 函数

#if (NGX_OPENSSL)ngx_ssl_init(log); #endif objs/ngx_auto_config.h 中 #ifndef NGX_OPENSSL #define NGX_OPENSSL 1 #endif 所以这个条件编译成立 NGX_OPENSSL 是一个宏定义&#xff0c;用于控制与 OpenSSL 相关的功能是否被启用 若用户通过./configure参数&#xff08;如-…

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…

Redis 09章——哨兵(sentinel)

一、是什么 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据$\textcolor{red}{投票数}$自动将某一个从库转换为新主库&#xff0c;继续对外服务作用&#xff1a;俗称无人值守运维官网理论&#xff1a;High availability with Redis Sentinel | Docs 二、能干…

WEB入门

1.了解什么是WEB 2.了解什么是WEB前端 3.学习和掌握开发环境的搭建 4.网页开发基础 1.什么是WEB 1946年&#xff0c;有一个发明了人类史上第一台完整体系的计算机 时间进展到1989年&#xff0c;实验室有一个研发人员 TimBernersLee&#xff08;提姆博纳斯李&#xff09;开…