当前位置: 首页 > news >正文

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

学习笔记,仅供参考

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.运行结果

相关文章:

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

学习笔记&#xff0c;仅供参考 1.头文件 2.初始化 3.增加值 4.根据下标取值 5.查找 6.插入 7.删除 8.动态增加数组的长度 9.所有代码 10.运行结果 1.头文件 //顺序表的实现——动态分配 #include<stdio.h> #include<stdlib.h> #define InitSize 10 type…...

提升SEO排名!SSL证书对SEO效果的积极影响

搜索引擎优化&#xff08;SEO&#xff09;作为提升网站可见度和吸引有机流量的关键策略&#xff0c;其规则与标准也在不断进化以适应这些变化。其中&#xff0c;安装SSL证书对SEO效果产生的正面影响尤为显著。以下是关于安装SSL证书如何促进SEO效果的详细分析。 一、搜索引擎的…...

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…...

Vue + Vite + Axios 项目多环境以及部署前后端跨域

最近在前端多环境和部署服务器之后出现的跨域的问题。 多环境 前端多环境 Vite Axios 1.首先在项目目录下定义多环境的文件。 这里列举开发环境和发布环境 .env.development 环境 # 开发时加载// 此处为开发时接口 VITE_API_URL http://localhost:8080/api.env producti…...

Nginx+GateWay

目录 Nginx nginx如何配置负载均衡 负载均衡有哪些策略 1、轮询&#xff08;默认&#xff09; 2、指定权重 3、ip_hash&#xff08;客户端ip绑定&#xff09; 4、least_conn&#xff08;最少连接&#xff09; 5、fair 6、url_hash Nginx为什么效率高 gateway 使用gat…...

React中间件的概念以及常用的实现

在 React 中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种在组件之间进行处理的机制&#xff0c;它允许你在组件渲染过程中注入一些逻辑、功能或者处理过程。中间件通常被用于在组件渲染前后执行一些操作&#xff0c;比如日志记录、权限验证、状态管理等。常用的…...

如何对团队成员进行六西格玛管理的培训?

在现代企业中&#xff0c;六西格玛管理已成为提升产品质量、减少浪费、提高生产效率的重要工具。然而&#xff0c;要想充分发挥六西格玛管理的优势&#xff0c;必须拥有一支熟练掌握这一方法的团队。因此&#xff0c;对团队成员进行六西格玛管理培训至关重要。具体步骤如深圳天…...

Zibll 子比文章标题加上渐变彩色文字

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、配置方式二、使用步骤1.引入库前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍…...

C/C++ StringToAddress(字符串转 boost::asio::ip::address)

为什么不推荐 boost::asio::ip::address::from_string、boost::asio::ip::address::make_string 函数来把字符串转换为 ip 地址呢&#xff1f; 这是因为有平台、编译器兼容性&#xff0c;在 android 平台上面&#xff0c;使用这两个函数会导致崩溃问题&#xff0c;在一些 clang…...

【玩转Google云】构建安全高效的电商系统:GCP VPC 网络规划指南

在竞争激烈的电商领域,一个安全、高效且可扩展的网络基础架构至关重要。本文将深入探讨 Google Cloud Platform (GCP) 的 Virtual Private Cloud (VPC) 如何助力构建理想的电商系统。通过以一个典型的电商网站为例,我们将逐步解析 VPC 网络规划的关键步骤,包括子网划分、防火…...

【YOLO改进】换遍MMDET主干网络之Pyramid Vision Transformerv2(PVTv2)(基于MMYOLO)

Pyramid Vision Transformer v2&#xff08;PVTv2&#xff09; Pyramid Vision Transformer v2&#xff08;PVTv2&#xff09;是在PVTv1的基础上进行改进的一种深度学习模型&#xff0c;它同样结合了Transformer架构和金字塔结构&#xff0c;旨在提供更强大的特征表示和更好的…...

【漏洞复现】RuvarOA协同办公平台 WorkFlow接口处存在SQL注入

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…...

Kubelet containerd 管理命令 ctr常用操作

镜像常用操作 1. 拉取镜像 ctr images pull docker.io/library/nginx:alpine 指定平台 --all-platforms&#xff1a;所有平台&#xff08;amd64 、arm、386 、ppc64le 等&#xff09;&#xff0c;不加的话下载当前平台架构 --platform&#xff1a;指定linux/amd64平台 ctr …...

求一个B站屏蔽竖屏视频的脚本

求一个B站屏蔽竖屏视频的脚本 现在B站竖屏竖屏越来越多了&#xff0c;手机还好点给我一个按钮&#xff0c;选择不喜欢&#xff0c;但是我一般都用网页版看视屏&#xff0c;网页版不给我选择不喜欢的按钮&#xff0c;目测大概1/4到1/3的视频都是竖屏视频。 目前网页版唯一的进…...

用Github+HUGO搭建博客的经验教训

1. 创建两个Github仓库 一个是博客源仓库&#xff08;private&#xff09;&#xff0c;用于储存所有博客源文件&#xff08;Markdown文件和图片文件等&#xff09;。 另一个是GitHub Pages仓库&#xff08;public&#xff09;&#xff0c;用于储存由 Hugo 从Markdown 文件生成的…...

MongoDB4.4操作命令

show dbs; // 显示所有数据的列表use mvx; //如果数据库不存在&#xff0c;则创建数据库&#xff0c;否则切换到指定数据库。db; // 查看当前数据库 db.mvx.insertOne({username: root}); // 插入数据 当你插入一些文档时&#xff0c;MongoDB 会自动创建集 db.dropDatabase(); …...

共享旅游革命:千益畅行卡的优势揭秘

在共享经济的快速发展中&#xff0c;共享旅游创业已成为许多创新者和投资者关注的重点。特别是千益畅行&#xff0c;作为共享旅游行业的新秀&#xff0c;其商业模型和经营策略引起了市场的高度讨论。然而&#xff0c;对于这个公司是否仅仅是新一轮的市场“收割者”&#xff0c;…...

【doghead】mac: clion2024.1启动崩溃

doghead 是在mac 下跑各种数据的因此&#xff0c;在配置了环境后, 进行mac 构建 【doghead】mac构建&#xff0c;首先对mac的clion进行安装 mac 下安装clion2024.1 之前可能装过crack的clion教育优惠的clion跟之前的应该不同clion2024.1 在mac的新系统下崩溃google下竟然没有…...

企业合规视角下的菜鸟网络与拼多多不正当竞争案

近日&#xff0c;浙江省高院对备受瞩目的“菜鸟网络诉拼多多不正当竞争案”做出终审判决。该案件从2022年初发酵至今&#xff0c;终于以法院驳回拼多多上诉、维持一审判决而告一段落。此案不仅在法律层面引起广泛关注&#xff0c;更在企业合规方面提供了重要的案例参考。 根据判…...

如何在Java中处理日期和时间?介绍Java 8中的时间API

在 Java 中处理日期和时间&#xff0c;您可以使用 Java 8 引入的新的日期时间 API&#xff0c;也被称为 JSR-310&#xff0c;位于 java.time 包中。这个新的 API 解决了旧的 java.util.Date 类和 java.util.Calendar 类的线程安全和设计问题&#xff0c;并提供了一组丰富的工具…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...