数据结构顺序表,实现增删改查

一、顺序表结构体定义

#define MAXSIZE 8            //定义常量MAXSIZE,表示数据元素的最大个数为8
typedef int datatype;        //重定义int类型,分别后期修改顺序表中存储的数据类型
typedef struct
{int len;  //顺序表长度datatype data[MAXSIZE];  //数据元素
}Seqlist;

二、顺序表创建空间

Seqlist *Request_space(void) //创建空间
{Seqlist *list=(Seqlist *)malloc(sizeof(Seqlist));if(NULL==list)return NULL;list->len=0;            //顺序表长度初始化为0memset(list->data,0,sizeof(datatype)*MAXSIZE);  //数据元素初始化为0return list;
}

三、实现顺序表增删改查

1. 判断顺序表是否为空

int empty_list(Seqlist *list)  //判断顺序表长度是否为空
{	return list->len==0?-1:0;
}

2. 判断顺序表是否为满

int full_list(Seqlist *list)  //判断顺序表长度是否为满
{return list->len==MAXSIZE?-1:0;
}

3. 实现输出

void Output(Seqlist *list)  //实现输出
{if(NULL==list||empty_list(list))return ;for(int i=0;i<list->len;i++)printf("%d ",list->data[i]);puts("");
}

4. 顺序表尾插

int insert_rear(datatype value,Seqlist *list)  //实现尾插
{if(NULL==list||full_list(list))return -1;list->data[list->len]=value;list->len++;return 0;
}

5. 顺序表尾删

int delete_rear(Seqlist *list)  //实现尾删
{if(NULL==list||empty_list(list))return -1;list->len--;return 0;
}

6.  实现任意下表查找

datatype search_by_sub(int sub,Seqlist *list)  //实现任意下标查找
{if(NULL==list||empty_list(list)||sub<0||sub>=list->len)return -1;return list->data[sub];
}

7. 实现任意下标修改

int modify_list(int sub,datatype modify,Seqlist *list)  //实现任意下标修改
{if(NULL==list||empty_list(list)||sub<0||sub>=list->len)return -1;list->data[sub]=modify;return 0;
}

8. 实现任意下标插入

int insert_list(int sub,datatype value,Seqlist *list)  //实现任意下标插入
{if(NULL==list||full_list(list)||sub<0||sub>list->len)return -1;for(int i=list->len-1;i>=sub;i--){list->data[i+1]=list->data[i];}list->data[sub]=value;list->len++;return 0;
}

9. 实现任意下标删除

int delete_list(int sub,Seqlist *list)  //实现任意下标删除
{if(NULL==list||empty_list(list)||sub<0||sub>=list->len)return -1;for(int i=sub;i<list->len-1;i++){list->data[i]=list->data[i+1];}list->len--;return 0;
}

10. 实现任意元素修改

int modify_by_element(datatype value,datatype modify,Seqlist *list)  //实现任意元素修改
{if(NULL==list||empty_list(list))return -1;for(int i=0;i<list->len;i++){if(list->data[i]==value){list->data[i]=modify;return 0;}}printf("the value was not found\n");return -1;
}

11. 实现任意元素查找

int search_by_element(datatype value,Seqlist *list)  //实现任意元素查找
{if(NULL==list||empty_list(list))return -1;for(int i=0;i<list->len;i++){if(value==list->data[i])return i;}printf("the value was not found\n");return -1;
}

12. 实现任意元素插入

int insert_by_element(datatype value,datatype modify,Seqlist *list)  //实现任意元素插入
{int sub=search_by_element(value,list);if(sub==-1)return -1;insert_list(sub,modify,list);return 0;
}

13. 实现任意元素删除

int delete_by_element(datatype value,Seqlist *list)  //实现任意元素删除
{int sub=search_by_element(value,list);if(sub==-1)return -1;delete_list(sub,list);return 0;
}

四、分布编译实现顺序表增删改查【完整代码】

头文件 head.h

#ifndef __HEAD_H__
#define __HEAD_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 8typedef int datatype;
typedef struct
{int len;datatype data[MAXSIZE];
}Seqlist;Seqlist * Request_space(void);
int full_list(Seqlist *list);  //判断顺序表长度是否为满
int empty_list(Seqlist *list);  //判断顺序表长度是否为空
int insert_rear(datatype value,Seqlist *list);  //实现尾插
void Output(Seqlist *list);  //实现输出
int delete_rear(Seqlist *list);  //实现尾删
datatype search_by_sub(int sub,Seqlist *list);  //实现任意下标查找
int modify_list(int sub,datatype modify,Seqlist *list);  //实现任意下标修改
int insert_list(int sub,datatype value,Seqlist *list);  //实现任意下标插入
int delete_list(int sub,Seqlist *list);  //实现任意下标删除
int search_by_element(datatype value,Seqlist *list);  //实现任意元素查找
int modify_by_element(datatype value,datatype modify,Seqlist *list);  //实现任意元素修改
int insert_by_element(datatype value,datatype modify,Seqlist *list);  //实现任意元素插入
int delete_by_element(datatype value,Seqlist *list);  //实现任意元素删除#endif

自定义函数 fun.c

#include "head.h"Seqlist *Request_space(void) //创建空间
{Seqlist *list=(Seqlist *)malloc(sizeof(Seqlist));if(NULL==list)return NULL;list->len=0;memset(list->data,0,sizeof(datatype)*MAXSIZE);return list;
}
int empty_list(Seqlist *list)  //判断顺序表长度是否为空
{	return list->len==0?-1:0;
}
int full_list(Seqlist *list)  //判断顺序表长度是否为满
{return list->len==MAXSIZE?-1:0;
}
int insert_rear(datatype value,Seqlist *list)  //实现尾插
{if(NULL==list||full_list(list))return -1;list->data[list->len]=value;list->len++;return 0;
}
void Output(Seqlist *list)  //实现输出
{if(NULL==list||empty_list(list))return ;for(int i=0;i<list->len;i++)printf("%d ",list->data[i]);puts("");
}
int delete_rear(Seqlist *list)  //实现尾删
{if(NULL==list||empty_list(list))return -1;list->len--;return 0;
}
datatype search_by_sub(int sub,Seqlist *list)  //实现任意下标查找
{if(NULL==list||empty_list(list)||sub<0||sub>=list->len)return -1;return list->data[sub];
}
int modify_list(int sub,datatype modify,Seqlist *list)  //实现任意下标修改
{if(NULL==list||empty_list(list)||sub<0||sub>=list->len)return -1;list->data[sub]=modify;return 0;
}
int insert_list(int sub,datatype value,Seqlist *list)  //实现任意下标插入
{if(NULL==list||full_list(list)||sub<0||sub>list->len)return -1;for(int i=list->len-1;i>=sub;i--){list->data[i+1]=list->data[i];}list->data[sub]=value;list->len++;return 0;
}
int delete_list(int sub,Seqlist *list)  //实现任意下标删除
{if(NULL==list||empty_list(list)||sub<0||sub>=list->len)return -1;for(int i=sub;i<list->len-1;i++){list->data[i]=list->data[i+1];}list->len--;return 0;
}
int modify_by_element(datatype value,datatype modify,Seqlist *list)  //实现任意元素修改
{if(NULL==list||empty_list(list))return -1;for(int i=0;i<list->len;i++){if(list->data[i]==value){list->data[i]=modify;return 0;}}printf("the value was not found\n");return -1;
}
int search_by_element(datatype value,Seqlist *list)  //实现任意元素查找
{if(NULL==list||empty_list(list))return -1;for(int i=0;i<list->len;i++){if(value==list->data[i])return i;}printf("the value was not found\n");return -1;
}
int insert_by_element(datatype value,datatype modify,Seqlist *list)  //实现任意元素插入
{int sub=search_by_element(value,list);if(sub==-1)return -1;insert_list(sub,modify,list);return 0;
}
int delete_by_element(datatype value,Seqlist *list)  //实现任意元素删除
{int sub=search_by_element(value,list);if(sub==-1)return -1;delete_list(sub,list);return 0;
}

主函数 main.c

#include "head.h"
int main(int argc, const char *argv[])
{Seqlist *list=Request_space();int n;printf("please enter n:");scanf("%d",&n);datatype value;//定义变量--存储的值for(int i=0;i<n;i++){printf("please enter a value:");scanf("%d",&value);insert_rear(value,list);}Output(list);int sub;//定义变量--下标printf("please enter a sub:");scanf("%d",&sub);printf("%d\n",search_by_sub(sub,list));datatype modify;//定义变量--需要修改的值printf("please enter a sub you want to modify:");scanf("%d",&sub);printf("please enter a value you want to modify:");scanf("%d",&modify);modify_list(sub,modify,list);Output(list);printf("please enter a sub you want to insert:");scanf("%d",&sub);printf("please enter a value you want to insert:");scanf("%d",&value);insert_list(sub,value,list);Output(list);printf("please enter a sub you want to delete:");scanf("%d",&sub);delete_list(sub,list);Output(list);printf("please enter the value you want to find:");scanf("%d",&value);printf("please enter a value you want to insert:");scanf("%d",&modify);insert_by_element(value,modify,list);Output(list);printf("please enter the value you want to find:");scanf("%d",&value);delete_by_element(value,list);Output(list);return 0;
}

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

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

相关文章

Mysql 备份与还原

目录 一、数据备份的重要性 二、数据库备份类型 2.1 物理备份 2.&#xff12; 逻辑备份 三、常见的备份方法 3.1 物理冷备 3.2 专用备份工具 mysqldump 或 mysqlhotcopy 3.3 启用二进制日志进行增量备份 3.4 第三方工具备份 四、MySQL完全备份 五、数据库完全备份分类…

【学会动态规划】不同路径 II(6)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

算法提高-动态规划-背包问题

背包问题 01背包AcWing 423. 采药AcWing 1024. 装箱问题AcWing 1022. 宠物小精灵之收服AcWing 278. 数字组合AcWing 1023. 买书AcWing 426. 开心的金明 完全背包AcWing 1021. 货币系统AcWing 532. 货币系统 多重背包AcWing 1019. 庆功会单调队列优化AcWing 6. 多重背包问题 III…

Kubernetes - HPA-VPA - metrics介绍和安装 - HPA实验

目录 参考文章&#xff1a;(97条消息) Kubernetes-自动扩展器HPA、VPA、CA_hpa vpa_SRE运维充电站的博客-CSDN博客 HPA VPA 官方网址&#xff1a;autoscaler/vertical-pod-autoscaler at master kubernetes/autoscaler GitHub HPA和VPA进行扩缩容的区别&#xff1a; me…

【JavaEE】HTTP请求的构造

目录 1、通过form表单构造HTTP请求 2、通过JS的ajax构造HTTP请求 3、Postman的安装和简单使用 常见的构造HTTP请求的方式有一下几种&#xff1a; 直接通过浏览器的地址栏&#xff0c;输入一个URL&#xff0c;就可以构造一个GET请求HTML中的一些特殊标签&#xff0c;也会触发…

使用Python和Scrapy实现抓取网站数据

Scrapy是一个功能强大的网络爬虫框架&#xff0c;允许开发者轻松地抓取和解析网站内容&#xff0c;这篇文章主要为大家介绍了如何使用Python的Scrapy库进行网站数据抓取&#xff0c;需要的可以参考一下 在本文中&#xff0c;我们将介绍如何使用Python的Scrapy库进行网站数据抓…

ORA-27086: unable to lock file - already in use

数据库设计的定时任务&#xff0c;逻辑导出出现报错&#xff0c;ORA-27086: unable to lock file - already in use 检查文件目录权限&#xff0c;磁盘空间和定时脚本均没有发现异常 检查无果后在网上找到原因应该在于NFS自动挂载上没有nolock属性 先 umount /bak 修改/et…

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite 带着一个问题去学&#xff1a;明明可以直接访问一个后端系统的OData服务&#xff0c;为什么还要再多绕一道C…

Servlet 生命周期

文章目录 Servlet 生命周期主要有三个方法● 示意图● 初始化阶段● 处理浏览器请求阶段(service 方法)● 终止阶段 destory 方法(体现 Servlet 完整的生命周期)● 代码演示 Servlet 生命周期 主要有三个方法 ​ 1. init()初始化阶段 ​ 2. service()处理浏览器请求阶段 ​…

文心一言 VS 讯飞星火 VS chatgpt (60)-- 算法导论6.4 4题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;60&#xff09;-- 算法导论6.4 4题 四、证明&#xff1a;在最坏情况下&#xff0c;HEAPSORT 的时间复杂度是Ω (nlgn)。 文心一言&#xff1a; 要证明在最坏情况下&#xff0c;HEAPSORT 的时间复杂度是 Ω(n log n)&#xff0c…

DKN和KGC阅读

1. DKN 作者将外部知识图包含的知识融入新闻嵌入。 &#xff08;1&#xff09;将新闻标题单词词嵌入&#xff0c;单词链接的实体嵌入&#xff0c;以及实体的上下文嵌入(邻居实体嵌入的平均)建模为CNN输入的三个通道。 &#xff08;2&#xff09;然后使用KCNN模型&#xff0c…

大数据第一步-Mac安装Hadoop3

1.安装工作 1.1 准备工作 前提是把jJDK8安装好&#xff0c;hadoop3.x最低需要jdk8。 然后打开共享把远程登陆打开&#xff0c;不打开说是后面会报错&#xff0c; 到终端输入命令&#xff1a;ssh localhost 生成新的keygen否则后面会报错 Permission denied 命令&#xff1a;…