数据结构_顺序表中基本操作的实现_代码

学习笔记,仅供参考

1.头文件

2.初始化

3.增加值

4.根据下标取值

5.查找

6.插入

7.删除

8.动态增加数组的长度

9.所有代码

10.运行结果


1.头文件

//顺序表的实现——动态分配 
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef struct{int *data;int MaxSize;int length;
}SeqList;

2.初始化

//初始化一个顺序表 
void InitList(SeqList &L){//使用malloc函数申请一片连续的存储空间L.data = (int*)malloc(InitSize*sizeof(int));L.length = 0;L.MaxSize = InitSize;
}

3.增加值

//增加值
void AddValue(SeqList &L,int num){for (int i = 0;i<num;i++){scanf("%d",&L.data[i]);L.length++;}
} 

4.根据下标取值

判断所给的下标是否越界。

//根据下标取值
bool GetElem(SeqList &L,int num,int &e){if (num<1 || num>L.length) return false;e = L.data[num-1];return true;
} 

5.查找

//查找
int LocateElem(SeqList &L,int y){for (int i = 0;i<L.length;i++){if(L.data[i] == y) return i+1;}return 0;
} 

6.插入

判断是否越界,同时L.length为前置++。

//插入
bool ListInsert(SeqList &L,int k,int kl){if (kl<1 || kl>L.length+1) return false;if (L.length == L.MaxSize) return false;for(int i = L.length-1;i>=kl-1;i--){L.data[i+1] = L.data[i];}L.data[kl-1] = k;++L.length;return true;
} 

7.删除

//删除
bool ListDelet(SeqList &L,int num){if (num<1 || num>L.length) return false;for(int i = num;i<L.length;i++){L.data[i-1] = L.data[i];}--L.length;return true;
} 

8.动态增加数组的长度

//动态增加数组的长度
void IncreaseSize(SeqList &L,int len){int *p = L.data;L.data = (int*)malloc((L.MaxSize+len)*sizeof(int));for(int i = 0;i<L.length;i++){L.data[i] = p[i];}L.MaxSize = L.MaxSize+len;free(p);
} 

9.所有代码

//顺序表的实现——动态分配 
#include<stdio.h>
#include<stdlib.h>
#define InitSize 10
typedef struct{int *data;int MaxSize;int length;
}SeqList;
//初始化一个顺序表 
void InitList(SeqList &L){//使用malloc函数申请一片连续的存储空间L.data = (int*)malloc(InitSize*sizeof(int));L.length = 0;L.MaxSize = InitSize;
}//增加值
void AddValue(SeqList &L,int num){for (int i = 0;i<num;i++){scanf("%d",&L.data[i]);L.length++;}
} //根据下标取值
bool GetElem(SeqList &L,int num,int &e){if (num<1 || num>L.length) return false;e = L.data[num-1];return true;
} //查找
int LocateElem(SeqList &L,int y){for (int i = 0;i<L.length;i++){if(L.data[i] == y) return i+1;}return 0;
} //插入
bool ListInsert(SeqList &L,int k,int kl){if (kl<1 || kl>L.length+1) return false;if (L.length == L.MaxSize) return false;for(int i = L.length-1;i>=kl-1;i--){L.data[i+1] = L.data[i];}L.data[kl-1] = k;++L.length;return true;
} //删除
bool ListDelet(SeqList &L,int num){if (num<1 || num>L.length) return false;for(int i = num;i<L.length;i++){L.data[i-1] = L.data[i];}--L.length;return true;
} //动态增加数组的长度
void IncreaseSize(SeqList &L,int len){int *p = L.data;L.data = (int*)malloc((L.MaxSize+len)*sizeof(int));for(int i = 0;i<L.length;i++){L.data[i] = p[i];}L.MaxSize = L.MaxSize+len;free(p);
} int main(){SeqList L;int n,x;printf("请输入你要增加几条数据:");InitList(L);scanf("%d",&n); //增加值 AddValue(L,n);printf("当前的数据为:") ;for(int i = 0;i<L.length;i++){printf("%d ",L.data[i]);}printf("\n");printf("当前顺序表的长度为:%d\n",L.length); //根据下标找值 int e;printf("请输入你要取第几个值:");scanf("%d",&x); if (GetElem(L,x,e)) printf("找到的第%d个值为%d\n",x,e);else printf("没有找到\n");//查找int y;printf("请输入你要查找的值:");scanf("%d",&y); if (LocateElem(L,y)) printf("%d在第%d位置上\n",y,LocateElem(L,y));else printf("没有找到\n");//插入int k,kl;printf("请输入你要插入的值以及插入的位置:");scanf("%d %d",&k,&kl); if(ListInsert(L,k,kl)) printf("现在第%d位置上的值变为了%d\n",kl,k);else printf("插入失败\n");printf("当前的数据为:") ;for(int i = 0;i<L.length;i++){printf("%d ",L.data[i]);}printf("\n");printf("当前顺序表的长度为:%d\n",L.length); //删除int sc;printf("请输入你要删除第几个数据:");scanf("%d",&sc); if(ListDelet(L,sc)) printf("删除成功\n");else printf("删除失败\n");printf("当前的数据为:") ;for(int i = 0;i<L.length;i++){printf("%d ",L.data[i]);}printf("\n");printf("当前顺序表的长度为:%d\n",L.length); //增加顺序表长度 int l;printf("请输入你要增加的长度:");scanf("%d",&l);IncreaseSize(L,l);printf("当前顺序表的最大长度为:%d\n",L.MaxSize); return 0;
}

10.运行结果

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

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

相关文章

国产银河麒麟V10SP1系统下搭建TiDB数据库操作步骤图文

开发目的&#xff1a;在国产银河麒麟系统中搭建TiDB数据库运行环境。 开发工具&#xff1a;银河麒麟系统V10SP1TiDBMySql数据库8.0。 具体步骤&#xff1a; 1、在VmWare虚拟机中安装好国产银河麒麟V10Sp1操作系统。 2、打开终端命令&#xff0c;安装TiDB相关软件&#xff1…

LearnOpenGL(十一)之光源

一、投光物 将光投射(Cast)到物体的光源叫做投光物(Light Caster)。 二、平行光 当一个光源处于很远的地方时&#xff0c;来自光源的每条光线就会近似于互相平行&#xff0c;我们可以称这些光为平行光。当我们使用一个假设光源处于无限远处的模型时&#xff0c;它就被称为定向…

开源AlphaFold3来啦!快来亲自尝试预测蛋白质结构!

引言 随着AlphaFold2的显著成就&#xff0c;DeepMind的AlphaFold3引发了科学界的广泛关注。尽管官方尚未开源AlphaFold3的代码&#xff0c;一些社区开发者已开始基于现有的科学论文尝试复现。本文将介绍如何使用一个名为AlphaFold3复现项目的GitHub代码仓库来进行蛋白质结构预…

CTF—AWD防御起手式

前言 AWD (Attack With Defence)&#xff0c;比赛中每个队伍维护多台服务器&#xff0c;服务器中存在多个漏洞&#xff0c;利用漏洞攻击其他队伍可以进行得分&#xff0c;修复漏洞可以避免被其他队伍攻击失分。 改SSH密码 官方在给出服务器密码时&#xff0c;很有可能是默认…

.NET WebService \ WCF \ WebAPI 部署总结 以及 window 服务 调试

一、webservice 部署只能部署IIS上&#xff0c; 比较简单&#xff0c;就不做说明了 二、 WCF 部署 1 部署到IIS 跟部署 webservice 部署方法一样的 wcf 部署2 部署到控制台 要以管理员运行vs&#xff0c;或者 管理员运行 控制台的exe 在控制器项目中 创建IUserInfoService 接口…

资源管理游戏模版进入The Sandbox

我们非常高兴地向您介绍 Game Maker 的最新模板&#xff1a;资源管理游戏&#xff01; 这一全新的模板让您能够深入身临其境的游戏体验中&#xff0c;同时掌握令人兴奋的新机制。通过揭开模板的神秘面纱&#xff0c;您可以锤炼您的游戏设计技能。 什么是资源管理游戏&#xff1…

Hive Aggregation 聚合函数

Hive Aggregation 聚合函数 基础聚合 增强聚合

必备软件管理工具——Applite!!【送源码】

Mac 用户都知道&#xff0c;我们可以通过一个非常好用的一个工具 Homebrew 快速的使用命令下载海量的工具和软件。然而对于非技术人员来说&#xff0c;命令行的交互还是不太方便&#xff0c;如果有界面可以查看从 Homebrew 安装的软件&#xff0c;或者浏览 Homebrew 软件库就好…

抖音直播间怎么涨流量?掌握巨量千川投放技巧拓客事半功倍

抖音直播间作为一种新兴的社交娱乐形式&#xff0c;吸引了越来越多的用户参与和关注。然而&#xff0c;如何在抖音直播间中获得更多的流量和粉丝成为了很多主播面临的挑战。幸运的是&#xff0c;通过掌握巨量千川的投放技巧&#xff0c;拓客事半功倍是可能的。 首先&#xff0c…

Github新手入门使用方法

**存在问题&#xff1a;**新手如何快速入门github&#xff0c;能够下载开源文件&#xff0c;并且修改后更新远程github仓库&#xff1b; 解决方案&#xff1a; 参考&#xff1a; http://www.360doc.com/content/24/0301/12/60419_1115656653.shtml https://blog.csdn.net/gongd…

Kafka分级存储概念(一)

Kafka分级存储及实现原理 概述 Kafka社区在3.6版本引入了一个十分重要的特性: 分级存储,本系列文章主要旨在介绍Kafka分级存储的设计理念、设计细节以及具体的代码实现 背景:为什么要有分级存储? 场景 作为一款具有高吞吐及高性能的消息中间件,Kafka被广泛应用在大数据、…

本安防爆手机在电力行业中的应用

在电力行业这一充满挑战与风险的领域中&#xff0c;安全始终是最为首要的考量。电力巡检、维修等作业往往涉及易燃、易爆环境&#xff0c;这就要求工作人员配备能够在极端条件下保障通讯和作业安全的专业设备。防爆手机应运而生&#xff0c;以其独特的设计和卓越的性能&#xf…

Go 多模块工作区处理一个go项目下有多个module(即多个go.mod)的情况

背景 在现在微服务盛行的年代&#xff0c;一个人会维护多个代码仓库&#xff0c;很多的时候是多个仓库进行同时开发&#xff0c;也就是在当前项目下有多个目录&#xff0c;每个目录对应一个微服务&#xff0c;每个微服务都有一个go.mod文件。那么我在其中一个目录下要怎么导入…

如何使用jmeter进行接口测试?jmeter接口测试流程是怎样的

前言 我们学习自动化测试都会用到不同的工具&#xff0c;那么今天笔者呢&#xff0c;想给大家聊聊Jmeter接口测试流程详解&#xff0c;废话不多说直接进入正题。 一、jmeter简介 Jmeter是由Apache公司开发的java开源项目&#xff0c;所以想要使用它必须基于java环境才可以&am…

小阳的戒S笔记

文章目录 写在前面2024年5月8日21:12:172024年5月9日21:48:242024年5月10日08:04:141、记录昨夜之身体变化2、自身制定之计划1.此亦乃要事&#xff0c;特定问了度娘与GPT&#xff0c;找时间还得咨询专业医师。2.通过跑步宣泄&#xff0c;同时锻炼身体3.我不会有压力&#xff0c…

【intro】Graph Isomorphism Network(GIN)

论文 https://arxiv.org/pdf/1810.00826 abstract 图神经网络(gnn)是一种有效的图表示学习框架。gnn采用邻域聚合方案&#xff0c;通过递归聚合和变换相邻节点的表示向量来计算节点的表示向量。已经提出了许多GNN变体&#xff0c;并在节点和图分类任务上取得了最先进的结果。…

【RPC】Dubbo接口测试

关于rpc&#xff0c;推荐看看这篇 &#xff1a; 既然有HTTP协议&#xff0c;为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架&#xff1a; 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…

Java转Kotlin

Kotlin 是一种静态编程语言 2011JetBrains开始开发Kotlin&#xff0c;用于多平台应用&#xff08;能脱离虚拟机&#xff0c;直接编译成可以在win,mac,linux运行的二进制代码&#xff09; 2017获得谷歌官方支持 语法简洁&#xff08;减少了大量的样板代码&#xff0c;语法糖&…

一、写给Android开发者之harmony入门

一、创建新项目 对比 android-studio&#xff1a;ability类似安卓activity ability分为两种类型(Stage模型) UIAbility和Extensionability&#xff08;提供系统服务和后台任务&#xff09; 启动模式 1、 singleton启动模式&#xff1a;单例 2、 multiton启动模式&#xff1…

Pycharm 执行pytest时,会遇见某些case Empty suite

我这边的情况是有些case就是执行不了&#xff0c;百度了很多&#xff0c;有说设置选pytest的&#xff0c;有命名规范的&#xff0c;都没有成功。后面问了同事之后才发现&#xff0c;pytest 的框架&#xff0c;pytest.ini 执行的时候&#xff0c;加了个标签&#xff0c;主动把某…