数据结构 ->顺序表的输入 输出 查找 删除 销毁 快速排序

2023-10-27

目录

「话不多说」上代码:定义

顺序表的「输入」

顺序表的「输出」

顺序表的「查找」

顺序表的「删除」

顺序表的「销毁」

顺序表的「快速排序」


顺序表,全名顺序储存结构,是线性表的一种。

顺序表储存数据时,会提前申请一整块足够大小的物理空间,然后将数据依次储存起来,储存时做到数据元素之间不留一丝缝隙。

顺序表_百度百科

个人理解:顺序表储存数据的模式同数组十分相近,但是(当然有但是)顺序表每个数据元素的具体含义,在不同的情况下各不相同,它可以是一个数或一个字符,也可以是一页书,甚至其他更复杂的信息。

「话不多说」上代码:定义

#pragma once
#include<iostream>
using namespace std;
typedef int Sbt;
#define Size 1              //线性表储存空间的增量
typedef struct Sqlist
{
	Sbt* date = nullptr;    //储存空间的基址
	int legth = 0;          //当前长度
	int size = 0;           //当前分配的储存容量(以sizeof(Sbt)为单位)
}Sqlist;

初始化时将date置空,将线性表当前长度设为“0”。

顺序表的「输入」

//输入
void Sq_push(Sqlist& s, int x)
{
	if (s.legth <= s.size)
	{
		Sbt* temp;
		temp = (int *)realloc(s.date, (s.legth + Size) * sizeof(int));
		if (temp == nullptr)
		{
			cout << "内存分配失败" << endl;
			exit(0);
		}
		s.date = temp;
		s.size += Size;
	}
	s.date[s.legth] = x;
	++s.legth;
}

温馨提示:建议不要直接分配内存给s.date,在Microsoft Visual Studio Community 2019(我用的是这个)中,它会有以下警告:

官方给出的错误提示链接在此 --->    C6308 | Microsoft Docs

顺序表的「输出」

这个还是比较简单的,就不废话了,上代码。

void Sq_outall(Sqlist& s)
{
	for (int i = 0; i < s.legth; i++)
	{
		cout << s.date[i] << "  ";
	}
}

顺序表的「查找」

上代码

//查找
int Sq_found(Sqlist& s, int x)
{
	for (int i = 0; i < s.legth; i++)
	{
		if (s.date[i] == x)
		{
			cout << "位于第" << i << "号节点   (下标)" << endl;
			return i;
		}
	}
	cout << "ERROR:" << x << "不在指定范围内" << endl;
	return -1;
}

顺序表的「删除」

删除有三种情况有:前端删除,中端删除,后端删除。这三种都可以一次性解决。

从主函数内获得某数的下标,将其后方的数替换掉它,那它后方的数由它后方的后方替换掉,以此类推。

//删除
void Sq_dele(Sqlist& s, int x)
{
	for (int i = 0; i < s.legth; i++)
	{
		if (s.date[i] == x)
		{
			for (; i < s.legth; i++)
			{
				s.date[i] = s.date[i + 1];//将后方的数值替换掉前方的
			}
			s.legth--;
			break;
		}
	}
	cout<<"ERROR: " << x << " 不在指定范围内" << endl;
}

「别怪我没提醒你」  每删除一个数,s.legth都要减一;s.size不用管,因为你已经分配了内存空间,以便下次使用。

顺序表的「销毁」

//销毁
void Sq_destroy(Sqlist& s)
{
	s.legth = 0;
	s.size = 0;
	free(s.date);
	s.date = nullptr;
}

顺序表的「快速排序」

//快速排序
int Sq_quickcollate(Sqlist& s, int a, int b)
{
	int l = a, r = b,center;
	if (l < r)
	{
		while (l < r)
		{
			while (l < r && s.date[l] >= s.date[r])
				r--;
			if (l < r)
			{
				center = s.date[l];//                     ------ center <--
				s.date[l] = s.date[r];//                /                   \  
				s.date[r] = center;//                   -> s.date[r]------>s.date[l]
				l++;
				center = NULL;
			}
			while (l < r && s.date[r] <= s.date[r])
				l++;
			if (l < r)
			{
				center = s.date[l];
				s.date[l] = s.date[r];
				s.date[r] = center;
				r--;
				center = NULL;
			}
		}
		Sq_quickcollate(s, a, l);
		l++;
		Sq_quickcollate(s, l, b);
	}
	return 0;
}

参考文献:数据结构; C 语言版/严蔚敏,昊伟民编著。一北京:清华大学出版社,2007(2019.1重印(清华大学计算机系列教材)
 iSBN 978-7-302-14751-0

本人小白一枚,望指点

本人小白一枚,望指点

本人小白一枚,望指点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构 ->顺序表的输入 输出 查找 删除 销毁 快速排序 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 外卖点餐系统小程序 PHP+UniAPP

    一 介绍 本项目是给某大学餐厅开发的外面点餐系统 该项目针对校内的学生 配送由学校的学生负责配送 因此 该项目不同于互联网的外卖点餐系统 该系统支持属于 Saas 系统 由平台端 商家端 用户端 以及配送端组成 其中 平台端 商家端是由基于
  • 520七夕表白,还不懂浪漫?4套代码教会你如何深情表白【建议收藏】❤️

    马上又到了脱单的黄金时刻 七夕啦 如果你有喜欢的女孩子 一定要趁着这个时候把喜欢说出口 但是该不会还有人表白在学校的操场上摆着爱心蜡烛抱一束花喊一堆人来围观吧 No 请你立刻马上放弃这个计划 毫无心意不说 对于女孩子来说是真的很社死啊 PS
  • linux 查看java安装目录

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 获取java安装路径前要判断是否已经安装成功java 执行命令 java 1 U
  • 清晰图解,一图看懂图卷积GCN、时空图卷积ST-GCN

    目录 1 前言 2 普通卷积与图卷积 2 1 普通卷积 2 2 图卷积 3 ST GCN图卷积的代码解读 4 图卷积的缺陷 5 参考文献 6 联系方式 1 前言 本文为我阅读论文 Spatial Temporal Graph Convolu
  • 微信小程序API~GET

    框架提供丰富的微信原生API 可以方便的调起微信提供的能力 如获取用户信息 本地存储 支付功能等 1 wx on 开头的 API 是监听某个事件发生的API接口 接受一个 CALLBACK 函数作为参数 当该事件触发时 会调用 CALLBA
  • libmysqlclient.so.15: cannot open shared object file: No such file or directory

    libmysqlclient so 15 cannot open shared object file No such file or directory 分类 mysql服务器管理优化 2009 06 02 16 11 26769人阅读
  • DC系列漏洞靶场-渗透测试学习复现(DC-6)

    DC 6是一个易受攻击的实验环境 最终目的是让攻击者获得root权限 并读取flag DC 6使用的操作系统为Debian 64位 靶场下载链接 1 http www five86 com downloads DC 6 zip 2 http
  • P2141 [NOIP2014 普及组] 珠心算测验

    题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术 珠心算训练 既能够开发智力 又能够为日常生活带来很多便利 因而在很多学校得到普及 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法 他随机生成一个正整数集合
  • HTML之表格篇——表格的嵌套

    表格的嵌套一方面是为使页面 贴子 的外观更为漂亮 利用表格嵌套来编辑出复杂而精美的效果 另一方面是出于布局需要 用一些嵌套方式的表格来做精确的编排 或者二者兼而有之 熟练地掌握表格的嵌套技巧并不是很困难的 只要你思路清晰 对表格的整体嵌套构
  • Shiro源码分析之ShiroFilterFactoryBean

    创建核心Filter 同其他框架一样 都有个切入点 这个核心Filter就是拦截所有请求的 通过web xml中配置的Filer进入 执行init方法获取这个instance 调用下面的createInstance方法创建核心Filter
  • 学习《TensorFlow实战Google深度学习框架》(九)LeNet-5模型

    文章目录 6 4 经典卷积网络模型 6 4 4 LeNet 5模型 LeNet 5模型的架构 源代码 6 4 经典卷积网络模型 6 4 4 LeNet 5模型 LeNet 5模型是Yann LeCun教授于1998年在论文Gradient
  • hash函数(哈希表)

    一 什么叫做散列表 哈希表 散列表是存储key value映射的一种集合 散列表也叫做哈希表 散列表底层也是数组 只是通过一种hash函数来计算他的key值 二 hash函数 在Java中每一个对象都有属于自己的hashcode 这个has
  • interview5-多线程篇

    一 线程的基础知识 1 线程与进程 程序由指令和数据组成 但这些指令要运行 数据要读写 就必须将指令加载至 CPU 数据加载至内存 在指令运行过程中还需要用到磁盘 网络等设备 进程就是用来加载指令 管理内存 管理 IO 的 进程 当一个程序
  • docker中的Volume

    简介 Volume是计算机存储技术中的一个术语 用于表示一块独立的存储空间 在操作系统中 一个硬盘可以被分为多个分区 每个分区可以被格式化为一个独立的卷 这个卷就被称为Volume Volume通常是指一个逻辑存储单元 可以是硬盘 U盘 S
  • 操作系统名词解释

    名词表示 CF 溢出标志位 进位标志位 IF 中断屏蔽标志位 SF 符号标志位 PROW 可编程只读存储器 FCFS 先来先服务算法 SJF 最短进程优先算法 SRTN 最短剩余时间优先算法 HRRF 最高响应比优先算法 名词解释 1 特权
  • mysql5.5忘记密码——修改密码

    ERROR 1045 28000 Access denied for user root localhost using password YES 1 进入mysql的bin目录 2 net stop mysql关闭Mysql服务 记住这一
  • 线性回归实战:股价预测(未完)

    线性回归实战 股价预测 问题描述剖析 数据预处理 理解股价数据 数据清洗 构造训练数据 处理NA字段 数据归一化 构建模型 训练数据和测试数据 训练模型 可视化结果 本文内容是对贪心科技课程第二章的笔记 问题描述剖析 我们制定的任务是 根据
  • C语言中char数组和char指针有什么区别?

    让我们通过下面的例子 来了解 C语言中字符数组和字符指针之间的区别 void test arr is array of characters char arr 12 Aticleworld ptr is pointer to char ch
  • 给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合

    题目 给定一个数t 以及n个整数 在这n个数中找到加和为t的所有组合 例如t 4 n 6 这6个数为 4 3 2 2 1 1 这样输出就有4个不同的组合它们的加和为4 4 3 1 2 2 and 2 1 1 请设计一个高效算法实现这个需求
  • 数据结构 ->顺序表的输入 输出 查找 删除 销毁 快速排序

    目录 话不多说 上代码 定义 顺序表的 输入 顺序表的 输出 顺序表的 查找 顺序表的 删除 顺序表的 销毁 顺序表的 快速排序 顺序表 全名顺序储存结构 是线性表的一种 顺序表储存数据时 会提前申请一整块足够大小的物理空间 然后将数据依次