数据结构day3作业

一、完整功能【顺序表】的创建

【seqList.h】

#ifndef __SEQLIST_H__
#define __SEQLIST_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>//宏定义,线性表的最大容量
#define MAX 30//类型重定义,表示要存放数据的类型
typedef int DataType;//定义顺序表的结构体类型
typedef struct sequence
{//定义一个数组,存放连续的数据DataType data[MAX];//顺序表长度,已存放的元素个数int len;
}seqList, *seqListPtr;//创建一个顺序表
seqListPtr seq_create();//判空
int empty(seqListPtr S);//判满
int fill(seqListPtr S);//顺序表增加
int seq_add(seqListPtr S, DataType e);//顺序的遍历
void show(seqListPtr S);//任意位置插入数据
int index_add(seqListPtr S, int index, DataType e);//任意位置删除数据
int index_del(seqListPtr S, int index);//通过位置修改数据
void index_change(seqListPtr S, int index, DataType e);//按值查找,返回下标
int value_index(seqListPtr S, DataType e);//去重
void repeat(seqListPtr S);//销毁
void my_free(seqListPtr *S);#endif

【seqList.c】

#include "seqList.h"//创建一个顺序表
seqListPtr seq_create()
{//在堆区申请顺序表的大小空间,返回主程序使用seqListPtr S = (seqListPtr)malloc(sizeof(seqList));//判断申请空间是否合法if(NULL== S){printf("创建失败!\n");return NULL;}printf("创建成功!\n");//顺序表的长度置为0S->len = 0;//数组清空memset(S->data, 0, sizeof(S->data));return S;
}int empty(seqListPtr S)
{//判断所接受的顺序表是否合法if(NULL == S){printf("判空失败!\n");return -1;}return S->len==0;
}int fill(seqListPtr S)
{//判断所接受的顺序表是否合法if(NULL == S){printf("判满失败!\n");return -1;}return S->len == MAX;
}int seq_add(seqListPtr S, DataType e)
{//判断所接受的顺序表是否合法//判满if(NULL == S || fill(S)){printf("增加失败!\n");return 0;}//放入数据S->data[S->len] = e;//增加成功 顺序表长度自增S->len++;return 1;
}void show(seqListPtr S)
{//判读所接受的顺序表是否合法//判空if(NULL == S || empty(S)){printf("遍历失败!\n");return;}for(int i=0; i<S->len; i++){printf("%d ", S->data[i]);}printf("\n");
}//任意位置插入数据
int index_add(seqListPtr S, int index, DataType e)
{//判断所接受的顺序表是否合法//判满//判断插入的位置是否合理if(NULL == S || fill(S) || index<=0 || index > S->len+1){printf("插入失败!\n");return 0;}//插入位置对应下标index = index - 1;//腾位for(int i=0; i<S->len-index; i++){S->data[S->len-i] = S->data[S->len-1-i];}//插入数据S->data[index] = e;//顺序表长度自增S->len++;return 1;
}//任意位置删除数据
int index_del(seqListPtr S, int index)
{//判断所接受的顺序表是否合法//判空//判断删除的位置是否合理if(NULL == S || empty(S) || index<=0 || index>S->len){printf("删除失败!\n");return 0;}//删除:从前往后//位置对应的下标index = index -1;for(int i=index; i<S->len; i++){S->data[i] = S->data[i+1];}//顺序表长度自减S->len--;return 1;
}//通过位置修改数据
void index_change(seqListPtr S, int index, DataType e)
{//判断所接受的顺序表是否合法//判空//判断要修改的位置是否合理//判断新值和旧值是否相等if(NULL==S || empty(S) || index<=0 || index>S->len || S->data[index-1]==e){printf("修改失败!\n");return;}//修改(index是用户指定的位置,但计算机下标是从0开始)S->data[index-1]=e;
}//按值查找,返回下标
int value_index(seqListPtr S, DataType e)
{//判断所接受的顺序表是否合法//判空if(NULL==S || empty(S)){printf("查找失败!\n");return -1;}for(int i=0; i<S->len; i++){if(S->data[i]==e){return i;}}printf("查无此数据!\n");return -1;
}//去重
void repeat(seqListPtr S)
{if(NULL==S || S->len<=1){printf("去重失败!\n");return;}//顺序表中的每个元素for(int i=0; i<S->len; i++){//遍历i元素下面所有的元素for(int j=i+1; j<S->len; j++){if(S->data[i]==S->data[j]){index_del(S, j+1); //按位置删除(需要注意完全删除)j--;}}}
}//销毁
void my_free(seqListPtr *S)
{//判断所接受的顺序表是否合法if(NULL==*S){printf("销毁失败!\n");return;}free(*S);S=NULL;printf("销毁成功!\n");
}

【main.c】

#include "seqList.h"int main()
{//创建一个顺序表seqListPtr S = seq_create();//顺序表的增加seq_add(S, 10);seq_add(S, 20);seq_add(S, 30);seq_add(S, 40);seq_add(S, 50);//顺序表的遍历show(S);//任意位置插入数据index_add(S, 3, 3344);show(S);//非法插入测试index_add(S, 0, 3300);//任意位置删除数据index_del(S, 2);show(S);//非法删除测试index_del(S, 8);//通过位置修改数据index_change(S, 4, 9988);show(S);//按值查找,返回下标int index = value_index(S, 9988);index_change(S, index+1, 88099);show(S);//去重//先添加一些测试数据seq_add(S, 10);seq_add(S, 20);seq_add(S, 10);seq_add(S, 10);seq_add(S, 30);seq_add(S, 20);seq_add(S, 20);seq_add(S, 50);seq_add(S, 40);seq_add(S, 50);show(S);repeat(S);show(S);//销毁my_free(&S);S=NULL;return 0;
}

【执行结果】

二、知识点思维导图

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

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

相关文章

云计算HCIP-OpenStack02

书接上回&#xff1a; 云计算HCIP-OpenStack01-CSDN博客 7.OpenStack核心服务 7.1Horizon&#xff1a;界面管理服务 Horizon提供了OpenStack中基于web界面的管理控制页面&#xff0c;用户或者是管理员都需要通过该服务进行OpenStack的访问和控制 界面管理服务需要依赖于keyston…

【Linux】基础IO-----重定向与缓冲区

目录 一、文件描述符分配规则&#xff1a; 二、重定向&#xff1a; 1、本质&#xff08;原理&#xff09;&#xff1a; 2、dup2的使用&#xff1a; 3、添加重定向功能到shell&#xff1a; 4、stdout与stderr&#xff1a; 三、Linux下一切皆文件&#xff1a; 四、缓冲区&…

音频客观测评方法PESQ

一、简介 语音质量感知评估&#xff08;Perceptual Evaluation of Speech Quality&#xff09;是一系列的标准&#xff0c;包括一种用于自动评估电话系统用户所体验到的语音质量的测试方法。该标准于2001年被确定为ITU-T P.862建议书[1]。PESQ被电话制造商、网络设备供应商和电…

ubuntu下anconda装pytorch

1、禁用nouveau sudo vim /etc/modprobe.d/blacklist.conf 在文件最后部分插入以下两行内容 blacklist nouveau options nouveau modeset0 更新系统 sudo update-initramfs -u 重启系统 2、装nvidia驱动 卸载原来驱动 sudo apt-get remove nvidia-* &#xff08;若安装…

Hyperledger Fabric 2.x 环境搭建

Hyperledger Fabric 是一个开源的企业级许可分布式账本技术&#xff08;Distributed Ledger Technology&#xff0c;DLT&#xff09;平台&#xff0c;专为在企业环境中使用而设计&#xff0c;与其他流行的分布式账本或区块链平台相比&#xff0c;它有一些主要的区别。 环境准备…

c++中类的应用综合练习

整理思维导图 课上类实现> 、<、!、||、&#xff01;和后自增、前自减、后自减运算符的重载 代码部分&#xff1a; #include <iostream> using namespace std; class complex {int rel;int vir; public:complex(int rel,int vir):rel(rel),vir(vir){}complex(){}…

视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况

矿山作业环境复杂多变&#xff0c;安全隐患层出不穷。其中&#xff0c;矿工未佩戴安全帽这一行为&#xff0c;看似微不足道&#xff0c;实则潜藏着巨大的安全风险。一旦发生事故&#xff0c;未佩戴安全帽的矿工将极易受到重创&#xff0c;甚至危及生命。因此&#xff0c;确保每…

k8s服务搭建与实战案例

Kubernetes&#xff08;K8s&#xff09;作为一个开源的容器编排平台&#xff0c;广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**&#xff0c;包括从基础部署到高级应用场景的使用。通过这些案例&#xff0c;可以更好地理解 K8s 的运作原理和最佳…

JAVA学习日记(二十六)网络编程

一、网络编程的概念 常见的软件架构&#xff1a; 二、网络编程三要素 IP&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识 端口号&#xff1a;应用程序在设备中的唯一标识 协议&#xff1a;数据在网络中传输的规则&#xff0c;常见的协议有UDP、TCP、http、https、f…

vue 设置 VUE_APP_TITLE 打包部署后不生效

VUE_APP_TITLE 名门望族云科技有限公司网站 这里的 名门望族云科技有限公司网站 两边不能加 (单引号) 部署后,浏览器刷新网站根目录

黑马头条day01 微服务搭建

1.请求调用流程 如http://localhost:8803/static/js/2.0195d7180dc783c3fe99.js这种静态资源&#xff0c;采用http的发送到本地8803端口的静态资源请求&#xff0c;而nginx配置的监听8801、8802、8803&#xff0c;所以请求走到nginx&#xff0c;nginx的admin配置文件 upstream…

LabVIEW热电偶传感器虚拟仿真实验系统

在教学和科研领域&#xff0c;实验设备的更新和维护成本较高&#xff0c;尤其是在经济欠发达地区&#xff0c;设备的短缺和陈旧化严重影响了教学质量。基于LabVIEW的热电偶传感器虚拟仿真实验系统能够通过模拟实验环境&#xff0c;提供一个成本低廉且效果良好的教学和研究平台。…

Win11 如何真正获取 Trustedinstaller 权限(非修改所有者及权限)

在新的系统中又该如何获得 Trustedinstaller 权限呢&#xff1f; 准备工作 1、首先&#xff0c;我们需要下载并安装 Set-NtTokenPrivilege 命令所需模块&#xff0c;我们先在系统 C 盘根目录新建名为“token”的文件夹。 2、以管理员身份运行 Powershell&#xff0c;然后输入…

ensp 静态路由配置

A公司有广州总部、重庆分部和深圳分部3个办公地点&#xff0c;各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3&#xff0c;为路由器配置静态路由&#xff0c;使所有计算机能够互相访问&#xff0c;实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…

C语言学习day18:字符串操作/ANSI编码/宽字节/消息框/软件/游戏编码/逆向分析中的编码

今天我们将学习字符串操作&#xff0c;为什么要着重来说这个呢&#xff1f;因为这是为我们之后window开发和api做准备。好的&#xff0c;我们现在正式开始&#xff1a; 字符串 字符串就是一串文字。 比如&#xff1a;"好好学习&#xff0c;天天向上"就是一个字符串…

【论文阅读笔记】One Diffusion to Generate Them All

One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper&#xff1a;https://arxiv.org/abs/2411.16318 Code&#xff1a;https://github.com/lehduong/onediffusion Authors&#xff1…

深入理解偏向锁、轻量级锁、重量级锁

一、对象结构和锁状态 synchronized关键字是java中的内置锁实现&#xff0c;内置锁实际上就是个任意对象&#xff0c;其内存结构如下图所示 其中&#xff0c;Mark Word字段在64位虚拟机下占64bit长度&#xff0c;其结构如下所示 可以看到Mark Word字段有个很重要的作用就是记录…

暂停一下,给Next.js项目配置一下ESLint(Next+tailwind项目)

前提 之前开自己的GitHub项目&#xff0c;想着不是团队项目&#xff0c;偷懒没有配置eslint&#xff0c;后面发现还是不行。eslint的存在可以帮助我们规范代码格式&#xff0c;同时 ctrl s保存立即调整代码格式是真的很爽。 除此之外&#xff0c;团队使用eslint也是好处颇多…

Elasticsearch 架构及 Lucene 索引结构原理入门

文章目录 Elasticsearch 整体架构Lucene 索引结构Lucene 倒排索引核心原理倒排索引倒排表&#xff08;Posting List&#xff09; Elasticsearch 整体架构 一个 ES Index 在集群模式下&#xff0c;有多个Node&#xff08;节点&#xff09;组成&#xff0c;每个节点就是ES的 inst…

【SQL Server报错】在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。

目录 1、报错截图 2、解决步骤 1&#xff09;打开SQL Server配置管理器 2&#xff09;检查SQL Server服务 3&#xff09;检查SQL Server网络配置 4&#xff09;重启SQL Server数据库 1、报错截图 报错界面忘记截图了&#xff0c;我用的SQL Server2019&#xff0c;这里借…