首页 > 其他分享 >顺序表

顺序表

时间:2024-09-27 11:01:48浏览次数:5  
标签:顺序 return int 元素 elem length SqList

顺序表和数组十分相似,添加数据时需要先判断数据插入的位置是否合法,然后从后往前(防止前面的数据将后面的覆盖)将插入位置之后的数据元素后移1位。
删除首先也是判断删除的位置是否合法,将要删除的数据保存在一个变量中(方便日后查找),接着从前往后(防止后面的数据覆盖前面的数据)将被删除元素之后的元素前移1位。
查找数据遍历所有数据元素,找到合适的在返回他的位置。

include

using namespace std;

const int MAXSIZE = 100; // 定义最大容量
typedef int ElemType; // 定义元素类型

struct SqList {
ElemType elem[MAXSIZE]; // 存储元素的数组
int length; // 当前元素的个数
};

// 获取元素
int GetElem(SqList L, int i, ElemType &e) {
if (i < 1 || i > L.length) {
return 0; // 位置不合法
} else {
e = L.elem[i - 1]; // 获取元素
return 1; // 成功
}
}

// 定位元素
int LocateElem_Sq(SqList L, ElemType e) {
for (int i = 0; i < L.length; i++) {
if (L.elem[i] == e) {
return i + 1; // 返回元素的位置
}
}
return 0; // 没有找到元素
}

// 插入元素
int ListInsert_Sq(SqList &L, int i, ElemType e) {
if (i < 1 || i > L.length + 1) {
return 0; // 位置不合法
}
if (L.length == MAXSIZE) {
return 0; // 存储空间已满
}
// 从后往前移动元素,为插入腾出位置
for (int j = L.length - 1; j >= i - 1; j--) {
L.elem[j + 1] = L.elem[j];
}
L.elem[i - 1] = e; // 插入元素
++L.length; // 更新长度
return 1; // 成功
}

// 删除元素
int ListDelete_Sq(SqList &L, int i) {
if (i < 1 || i > L.length) {
return 0; // 位置不合法
}
// 保存删除的元素
ElemType a = L.elem[i - 1];
// 从前往后移动元素,覆盖要删除的元素
for (int j = i; j < L.length; j++) {
L.elem[j - 1] = L.elem[j];
}
--L.length; // 更新长度
return 1; // 成功
}

// 输入列表
void ListInput(SqList &L) {
int LENGTH;
cin >> LENGTH; // 输入列表长度
L.length = LENGTH; // 更新列表长度
for (int i = 0; i < LENGTH; i++) {
cin >> L.elem[i]; // 输入元素
}
}

// 输出列表
void ListOutput(SqList L) {
for (int i = 0; i < L.length; i++) {
cout << L.elem[i] << " "; // 输出元素
}
cout << endl; // 输出换行
}

标签:顺序,return,int,元素,elem,length,SqList
From: https://www.cnblogs.com/LiuHuWei/p/18434059

相关文章

  • 【EBS】Form触发器执行顺序
    简单整理一点Form页面中的触发器执行顺序内容。一、打开一个Form页面时:(1)PRE-FORM(2)PRE-BLOCK(BLOCK级)(3)WHEN-NEW-FORM-INSTANCE(4)WHEN-NEW-BLOCK-INSTANCE(5)WHEN-NEW-RECORD-INSTANCE(6)WHEN-NEW-ITEM-INSTANCE二、F11查询过程(1)WHEN-CLEAR-BLOCK(2)WHEN-NEW-RECORD-INS......
  • 8、串的顺序存储
    1、代码实现#include<stdio.h>#include<malloc.h>#include<assert.h>#include<string.h>//"abcdef"=>"abcdef/0//用数组第一个空间存储字符串长度5abcef#defineMAX_STR_LEN20#defineu_charunsignedchar//串结构顺序存储定义typede......
  • vue父子组件的生命周期加载顺序
    vue父子组件的生命周期加载顺序官网里vue组件的生命周期钩子汇总列举如下:生命周期单个vue组件的生命周期执行顺序已经非常熟悉了。但是,如果有嵌套组件,父子组件的生命周期的执行顺序是什么呢?嵌套组件又分为2种情况:一种是在template直接引入(大部分场景),另一种是element......
  • RocketMq知识总结及消息顺序性
    为什么选择RocketMq?几种MQ的区别:如果业务场景对并发量要求不是太高(十万级、百万级),那这四种消息队列中,RabbitMQ一定是你的首选。如果是大数据领域的实时计算、日志采集等场景,用Kafka是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规......
  • 效果选项的等价性和顺序-TS:实用指南
    effect-ts提供了比较选项的机制,允许您根据它们包含的值确定它们的等价性或顺序。当您需要检查两个选项是否相等或者需要对它们进行排序或比较时,这些工具非常有用。在本文中,我们将探讨用于比较选项的两个关键函数:o.getequivalence和o.getorder。示例1:将选项与o.getequiv......
  • 【ppt技巧】一张幻灯片内多张图片顺序播放
    ​想要在PPT文件的一张幻灯片中插入多张图片,想要将图片,如何设置图片一张张的按顺序播放呢?我们一起来学习一下:首先,我们先将需要的图片都添加到幻灯片中然后我们点击工具栏中的动画功能,对每张图片都设置好动画效果,设置好动画效果之后每张图片左上角都出现了数字,这和你设置动画......
  • 用户登录时的环境加载顺序
    1.配置文件说明系统级的配置文件配置文件描述/etc/profile系统级的全局配置文件,在用户登录时由Bash首先读取(如果是登录shell)。/etc/profile.d/*这里面的脚本通常由/etc/profile调用,用于更灵活地进行系统级的环境变量设置和初始化任务等。/etc/bashrc为每一个......
  • C++——输入三个整数,按照由小到大的顺序输出。用指针方法处理。
    没注释的源代码#include<iostream>usingnamespacestd;voidswap(int*m,int*n);intmain(){   inta,b,c;   int*p1,*p2,*p3;   cout<<"请输入三个整数:"<<endl;   cin>>a>>b>>c;   p1=&a;p2=&b;p3=&c;   ......
  • Linux基础——修改Bclinux8的内核启动顺序
    一、Grubby的参数(base)[root@NewOSBC8~]#grubby--helpUsage:grubby[OPTION...]--add-kernel=kernel-pathaddanentryforthespecifiedkernel--args=argsdefaultargumentsforthenewkernelornewarguments......
  • 栈的深度解析:顺序栈与链栈的实现
    引言栈是一种重要的线性数据结构,遵循“后进先出”(LIFO)的原则。栈的应用非常广泛,如表达式求值、括号匹配、递归实现等。在本文中,我们将深入探讨栈的概念,并通过顺序栈和链栈两种实现方式进行对比分析。一、基本概念1.定义栈(Stack)是一种只能在一端进行插入和删除操作的集合,遵......