数据结构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;
}
【执行结果】
二、知识点思维导图
相关文章:
数据结构day3作业
一、完整功能【顺序表】的创建 【seqList.h】 #ifndef __SEQLIST_H__ #define __SEQLIST_H__#include <stdio.h> #include <string.h> #include <stdlib.h>//宏定义,线性表的最大容量 #define MAX 30//类型重定义,表示要存放数据的类…...
pydub AudioSegment实现音频重采样 - python 实现
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...
C++多线程常用方法
在 C 中,线程相关功能主要通过头文件提供的类和函数来实现,以下是一些常用的线程接口方法和使用技巧: std::thread类 构造函数: 可以通过传入可调用对象(如函数指针、函数对象、lambda 表达式等)来创建一…...
【网络安全】Web Timing 和竞争条件攻击:揭开隐藏的攻击面
Web Timing 和竞争条件攻击:揭开隐藏的攻击面 在传统的 Web 应用中,漏洞的发现和利用通常相对容易理解。如果代码存在问题,我们可以通过发送特定输入来强制 Web 应用执行非预期的操作。这种情况下,输入和输出之间往往有直接关系&…...
12月最新编程语言排行榜
“岁末将至,2024年的编程世界又发生了哪些变化?是Python依然稳坐王座,还是有新语言杀出重围?让我们一起看看12月最新编程语言排行榜,寻找未来技术的风向标。” 今年,哪些编程语言成为行业焦点?…...
迭代器模式
迭代器模式 迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种方法来访问一个聚合对象中的各个元素,而又不暴露其内部的表示。这种模式允许你逐个访问对象中的元素,而无需知道其底层的数据结构。迭代器模…...
探秘 WB 实验:AI 助力攻克操作难关
在生物学研究的浩瀚领域中,WB 实验犹如一座关键的灯塔,照亮了我们探索蛋白质世界的道路。今天,就让我们一同深入了解 WB 实验的全貌,以及 AI 如何在其中发挥神奇作用,帮助我们应对实际操作中的重重挑战。 WB 实验&…...
labelimg使用指南
YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训…...
车载终端_智能车载终端定制_农机/出租车/叉车/驾培车载终端MTK方案
车载终端集成了先进的技术和卓越的性能,采用了联发科的高效低功耗ARM处理器,具备八核架构,主频高达2.0GHz,基于12nm制程工艺,不仅性能强劲,而且功耗控制出色。基本配置为4GB内存与64GB存储,用户…...
Unity中Pico实现透视
1.参照Pico官方【透视 | PICO 开发者平台】文档设置。 2.额外的需要将主相机的post processing禁用。...
elk部署与实战案例
**ELK Stack** 是一个非常强大的日志处理和分析平台,由 **Elasticsearch**、**Logstash** 和 **Kibana** 三个组件组成。它被广泛应用于日志收集、搜索、分析和可视化。ELK 可以处理大量数据,并帮助用户从中提取有价值的信息。以下是一个从部署到实际应用…...
Isaac Gym, Sim, Lab
本文仅为个人学习笔记,文章参考请见参考资料部分,主要目的是进行多场景并行仿真测试,笔记中大部分内容都是针对于这个目标。 参考资料 常见问题 — Isaac Lab 文档 https://github.com/isaac-sim/IsaacLab 一. Gym, Sim, Lab 之间的关系 Is…...
活着就好20241217
亲爱的朋友们,大家早上好!🌞 今天是17号,星期二,2024年12月的第十七天,同时也是第50周的第八天,农历甲辰[龙]年十一月初十三日。在这晨光熹微的美好时刻,愿那温暖而明媚的阳光轻轻拂…...
第十六章:IO流 (java.io包中)
一、理解 1. 简单而言:流就是内存与存储设备之间传输数据的通道、管道。 2. 分类: (1) 按方向 ( 以 JVM 虚拟机为参照物 ) 【重点】 输入流:将 < 存储设备 > 中的内容读入到 < 内存 > 中。 输出流:将 < 内…...
Introduction to NoSQL Systems
What is NoSQL NoSQL database are no-tabular非數據表格 database that store data differently than relational tables 其數據的存儲方式與關係型表格不同 Database that provide a mechanism機制 for data storage retrieval 檢索 that is modelled in means other than …...
【JVM】JVM基础教程(四)
上一章:【JVM】JVM基础教程(三)-CSDN博客 目录 自动垃圾回收 方法区的回收 方法区回收条件 手动触发回收 堆回收 如何判断堆上的对象可以回收? 可以给对象引用赋值null,切断引用 引用计数法 循环引用缺点 查…...
前端实现在线预览excel文件
在前端开发中,经常会遇到需要在线预览各种文件的需求。本文将介绍如何使用前端技术实现在线预览 Excel 文件的功能。 一、基于微软office服务的excel预览 获取要预览的 Excel 文件的 URL(例如存储在 OneDrive 或 SharePoint 上的文件)。 使…...
Python 写的《桌面时钟》屏保
原代码: # 日历式时钟 # 导入所需的库 # 作者:Hoye # 日期:2024年12月16日 # 功能:显示当前日期、星期、时间,并显示模拟时钟 import tkinter as tk from tkinter import ttk import time import math import sysdef …...
计算机视觉单阶段实例分割实践指南与综述
概述 原文地址:https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49 实例分割是一项具有挑战性的计算机视觉任务,需要预测对象实例及其每像素分割掩码。这使其成为语义分割和目标检测的混合体。 自 Mask R-CNN …...
Axios结合Typescript 二次封装完整详细场景使用案例
Axios 是一个基于 promise 的 HTTP 客户端,用于浏览器和 node.js。二次封装 Axios 主要是为了统一管理 HTTP 请求,例如设置统一的请求前缀、头部、超时时间,统一处理请求和响应的格式,以及错误处理等。 以下是一个使用 TypeScrip…...
C++面试:HTTP1.0/1.1,HTTP2.0,HTPP3.0的区别
1.你对HTTP1.0/1.1,HTTP2.0,HTPP3.0有什么了解? 答:HTTP1.0: ①属于无连接式,每次发送HTTP请求都需要建立TCP连接。 ②会造成发送时的对头阻塞,当上一个请求没有应答,当前的请求就会…...
使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群
文章目录 使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群Redis 主从架构简介Redis Sentinel 简介配置文件1. 主节点配置 (redis-master.conf)2. 从节点配置 (redis-slave1.conf 和 redis-slave2.conf)redis-slave1.confredis-slave2.conf3. Sentinel 配置 (sentin…...
【Java】4、虚拟机 JVM
目录 Java内存区域详解(重点) JVM垃圾回收详解(重点) 类文件结构详解 类加载过程详解 类加载器详解(重点) 最重要的JVM参数总结 JDK监控和故障处理工具总结 JVM线上问题排查和性能调优案例 参考: JVM 核心技术 32 讲 深入浅出 Java 虚拟机...
Vue3之组合式API详解
Vue 3引入了一种新的API风格——组合式API(Composition API),旨在提升组件的逻辑复用性和可维护性。本文将详细阐述Vue 3中的组合式API,包括其定义、特点、使用场景、优势等,并给出具体的示例代码。 一、定义 组合式…...
Flutter编译Module was compiled with an incompatible version of Kotlin错误解决
文章目录 编译报错如下解决方法修复方案 编译报错如下 e: C:/Users/YUAN/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.20/e58b4816ac517e9cc5df1db051120c63d4cde669/kotlin-stdlib-1.9 .20.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module:…...
Uniapp插件如何通过NFC读取多种证卡信息?
nfc读卡uniapp插件,由中软高科进行开发,主要是通过NFC读取居民身份证、港澳台居住证、外国人居住证、护照等证卡的信息。经过多个版本的升级更新,目前性能已趋于稳定,并且读卡速度较之最初版本有了大的提升。 注意事项 测试使用的…...
本地docker镜像改名字
如果你想修改本地 Docker 镜像的名字,可以通过创建该镜像的新标签(tag)来实现。Docker 中没有直接修改镜像名字的命令,但可以通过重新打标签的方式实现类似的效果。以下是具体步骤: 查看当前镜像: docker…...
VS Code 远程连接 SSH 服务器
文章目录 一、安装 Remote - SSH 扩展并连接远程主机二、免密连接远程主机1. 生成 SSH 密钥对2. 将公钥复制到远程服务器3. 配置 SSH 客服端4. 连接测试 随着技术的不断迭代更新,在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器(我曾经也是个 …...
艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型
在现代软件开发领域,效率和可靠性是企业在竞争中取胜的关键。本文将深入探讨 ANA Systems 如何通过引入业界领先的 CI/CD 平台——CircleCI,克服传统开发流程的瓶颈,实现开发运营效率的全面提升。同时,本文还将详细解析 CircleCI …...
vue 上传组件 vxe-upload 实现拖拽调整顺序
vue 上传组件 vxe-upload 实现拖拽调整顺序,通过设置 drag-sort 参数就可以启用拖拽排序功能 官网:https://vxeui.com/ 图片拖拽排序 <template><div><vxe-upload v-model"imgList" mode"image" multiple drag-sor…...
Elasticsearch的一些介绍
你想问的可能是 **Elasticsearch**,以下是关于它的一些介绍: ### 概述 Elasticsearch是一个基于Apache Lucene库构建的开源分布式搜索和分析引擎,采用Java语言编写,具有高性能、可扩展性和易用性等特点,可用于各种数据…...
从源码构建安装Landoop kafka-connect-ui
背景 部署Landoop kafka-connect-ui最简单的办法还是通过docker来部署,我们之前的kafka-connect-ui就是通过docker部署的,但是,最近发现个问题:当使用docker部署且防火墙使用的是firewalld的情况下,就会出现端口冲突。…...
MybatisPlus-扩展功能
代码生成 在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用,也很麻烦。 这里…...
发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)
CS软件授权注册系统-发布/部署WebApi服务器(IIS.NET8ASP.NETCore) 目录 本文摘要VS2022配置发布VS2022发布WebApiIIS服务器部署WebApi 将程序文件复制到云服务器添加网站配置应用程序池配置dns域名配置端口阿里云ECS服务器配置19980端口配置https协议 (申请ssl证书)测试WebAp…...
【2025最新计算机毕业设计】基于SpringBoot+Vue城市中小学体育场馆预约系统【提供源码+答辩PPT+文档+项目部署】
一、项目技术架构: 本项目是一款城市中小学体育场馆预约系统的设计与实现。 该SpringBootVue的城市中小学体育场馆预约系统,后端采用SpringBoot架构,前端采用VueElementUI实现页面的快速开发,并使用关系型数据库MySQL存储系统运行…...
Spring Security 6 系列之二 - 基于数据库的用户认证和认证原理
之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...
vue中打包dist文件内static 和 assets 的区别
背景 在Vue.js项目中,assets 和 static 是两个用于存放静态资源的文件夹,但它们在使用方式和处理机制上有所不同 用途 assets: assets 文件夹通常用于存放那些需要在构建过程中被Webpack处理的静态资源。这些资源可以包括图片、字体、样式文件&#…...
Big Model weekly | 第49期
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 Magnetic Preference Optimization: Achieving Last-iterate Convergence for Language Models Alignment 自我对弈方法在多个领域增强模型能力方面展现出了显著的成功。在基于人类反馈的强化学习࿰…...
Node.js内置模块
1.内置模块 Node.js的中文网参考手册:https://nodejs.cn//api 帮助文档 API文档:查看对应的模块,左边是模块,右边是模块的成员 源码:https://github.com/nodejs/node/tree/main/lib 查看 例如: http.js 创建web服务器的模块 -->进入源码中,搜索…...
使用Nexus3搭建npm私有仓库
一、npm介绍 npm的全称是Node Package Manager,它是一个开放源代码的命令行工具,用于安装、更新和管理Node.js模块。npm是Node.js的官方模块管理器,它允许用户从一个集中的仓库中下载和安装公共的Node.js模块,并将这些模块集成到…...
MySQL学习之表操作
MySQL学习之表操作 基础命令 查询当前所在数据库的所有表 show tables;查看指定的表结构, 可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信息 mysql> desc user; ----------------------------------------------- | Field |…...
C语言学习day22:ReadProcessMemory函数/游戏内存数据读取工具开发
简言: ReadProcessMemory函数是 Windows API 中的一个函数,用于从目标进程的虚拟内存空间中读取数据。这个函数非常有用,尤其是在进行内存分析、调试、或某些类型的逆向工程时。 ReadProcessMemory函数 函数原型 BOOL ReadProcessMemory(…...
Linux虚拟文件系统
参考:深入分析LINUX内核源码 深入分析Linux内核源码 (kerneltravel.net) 作为一个最著名的自由软件,Linux 确实名不虚传,几乎处处体现了“自由”,你可以编译适合自己系统要求的内核,或者轻松添加别人开发的新的模块。只…...
OpenIPC开源FPV之Adaptive-Link天空端代码解析
OpenIPC开源FPV之Adaptive-Link天空端代码解析 1. 源由2. 框架代码3. 报文处理3.1 special报文3.2 普通报文 4. 工作流程4.1 Profile 竞选4.2 Profile 研判4.3 Profile 应用 5. 总结6. 参考资料7. 补充资料7.1 RSSI 和 SNR 的物理含义7.2 信号质量加权的理论依据7.3 实际应用中…...
NPU是什么?电脑NPU和CPU、GPU区别介绍
随着人工智能技术的飞速发展,计算机硬件架构也在不断演进以适应日益复杂的AI应用场景。其中,NPU(Neural Processing Unit,神经网络处理器)作为一种专为深度学习和神经网络运算设计的新型处理器,正逐渐崭露头…...
.Net WebAPI(一)
文章目录 项目地址一、WebAPI基础1. 项目初始化1.1 创建简单的API1.1.1 get请求1.1.2 post请求1.1.3 put请求1.1.4 Delete请求 1.2 webapi的流程 2.Controllers2.1 创建一个shirts的Controller 3. Routing3.1 使用和创建MapControllers3.2 使用Routing的模板语言 4. Mould Bind…...
.NET 技术 | 调用系统API创建Windows服务
01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失…...
OpenLinkSaas 2025年1月开发计划
先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中,让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API,来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…...
同态加密算法详解及Python实现
目录 同态加密算法详解及Python实现第一部分:同态加密概述与原理1.1 什么是同态加密?同态加密的定义:1.2 同态加密的分类1.3 同态加密的优势与挑战优势挑战第二部分:常见同态加密算法及其应用场景2.1 RSA同态加密支持操作应用场景2.2 Paillier加密支持操作应用场景2.3 Gent…...
【HarmonyOS NEXT】ArkTs函数、类、接口、泛型、装饰器解析与使用
1. 前置学习文档 【HarmonyOS NEXT】ArkTs数据类型解析与使用(https://juejin.cn/spost/7448894500348608522) 2. 前言 在原生JavaScript中只有函数和类的实现,为了更好的面向对象编程,TypeScript 引入了接口、泛型、装饰器等特性。ArkTS也继承了这些特性…...