数据结构-顺序表中基本操作

数据结构—顺序表中基本操作

1.顺序表的初始化

【算法步骤】

  1. 为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  2. 将表的当前表长设为0。
Status InitList(SqList &L)
{//构造一个空的顺序表LL.elem=new Elemtype[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的数组空间if(!L.elem) exit(OVERFLOW);//存储分配失败退出L.length=0;//空表长度为零return OK;
}
  • 注:

    1. C++的初始动态分配语句为

      L.data=new Elemtype[InitSize];
      
    2. C的初始动态分配语句为

      L.data=(ElemType*)malloc(sizeof(Elemtype)*InitSize);
      
  • 注意:malloc(m):开辟m字节长度的地址空间,并返回这段空间的首地址。

2.顺序表的取值

【算法步骤】

  1. 判定指定的位置序号i值是否合理(1≤i≤L.length),若不合理,则返回ERROR。
  2. 若i值合理,则将第i个数据元素L.elem[i-1]付给参数e,并通过e返回第i个数据元素的值。
  • 注意:这里的i是元素在表中的位序,要与数组下标区分清楚。混淆的可以回顾基础知识(三)中关于顺序存储的知识:
Status GetElem(SqList L,int i,ElemType &e)
{if(i<1||i>L.length) return ERROR;//判断i值是否合理,若小于1或大于表中元素个数,则i值不合理e=L.elem[i-1];//elem[i-1]单元存储第i个数据元素return OK;  
}

3.顺序表的查找

【算法步骤】

  1. 从第一个元素起,依次和e相比较,若找到与e相等的元素L.elem[i],则查找成功,返回该元素的序号i+1。
  2. 若查遍整个顺序表都没有与e相等的元素,则查找失败,返回0。
int LocateElem(SqList L,ElemType e)
{for(i=0;i<L.length;i++)if(L.elem[i]==e) return i+1;return 0;
}

4.顺序表的插入(重点

【算法步骤】

  1. 判断插入位置i是否合法(i值的合法范围是1≤i≤n+1),若不合法则返回ERROR。
  2. 判断顺序表的存储空间是否已满,若满则返回ERROR。
  3. 将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1时无需移动元素)。
  4. 将要插入的新元素e放入第i个位置。
  5. 表长加1
Status ListInsert(SqList &L,int i,ElemType e)
{if(i<1||i>L.length+1) return ERROR;//判断i是否合法if(L.length==MAXSIZE) return ERROR;//判断当前存储空间是否已满for(j=L.length-1;j>=i-1;j--)L.elem[j+1]=L.elem[j];//将插入位置及之后的元素后移L.elem[i-1]=e;//将e放入第i个位置++L.length;//表长加1return OK;
}

5.顺序表的删除(重点

【算法步骤】

  1. 判断删除位置i是否合法(合法值为1≤i≤n),若不合法返回ERROR。
  2. 将第i+1个至第n个的元素依次向前移动一个位置(i=n时不需要移动,因为此时删除的是最后一个元素)。
  3. 表长减1。
Status ListDelete(SqList &L,int i)
{if(i<1||i>L.length) return ERROR;//判断i是否合法for(j=i;j<=L.length-1;j++)L.elem[j-1]=L.elem[j];//将i位置之后的元素前移--L.length;//表长减1return OK;
}

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

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

相关文章

Windows XP x86 sp3 安装 Google Chrome 49.0.2623.112 (正式版本) (32 位)

1 下载地址&#xff1b; https://dl.google.com/release2/h8vnfiy7pvn3lxy9ehfsaxlrnnukgff8jnodrp0y21vrlem4x71lor5zzkliyh8fv3sryayu5uk5zi20ep7dwfnwr143dzxqijv/49.0.2623.112_chrome_installer.exe 2 直接 双击 49.0.2623.112_chrome_installer.exe 安装&#xff1b; 3 …

第二百九十二回

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择图片和视频文件"相关的内容&#xff0c;本章回中将介绍如何混合选择多个图片和视频文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1…

蓝桥杯《走方格》

题目描述 在平面上有一些二维的点阵。 这些点的编号就像二维数组的编号一样&#xff0c;从上到下依次为第 1 至第 行&#xff0c;从左到右依次为第 1 至第 列&#xff0c;每一个点可以用行号和列号来表示。 现在有个人站在第 1 行第 1 列&#xff0c;要走到第 行第 列。…

BGP:04 fake-as

使用 fake-as 可以将本地真实的 AS 编号隐藏&#xff0c;其他 AS 内的对等体在指定本端对等体所在的AS 编号时&#xff0c;应该设置成这个伪AS 编号。 这是实验拓扑&#xff0c;IBGP EBGP 邻居都使用物理接口来建立 基本配置&#xff1a; R1: sys sysname R1 int loo0 ip add…

带libc源码gdb动态调试(导入glibc库使得可执行文件动态调试时可看见调用库函数源码)

文章目录 查看源码是否编译时有-g调试信息和符号表在 gdb 中加载 debug 文件/符号表将 debug 文件放入 ".debug" 文件夹通过 gdb 命令 set debug-file-directory directories GCC的gcc和g区别指定gcc/g&#xff0c;glibc的版本进行编译指定gcc/g的版本指定glibc的和l…

小电影网站上线之nginx配置不带www域名301重定向到www域名+接入腾讯云安全防护edgeone

背景 写了个电影网站&#xff08;纯粹搞着玩的&#xff09;&#xff0c;准备买个域名然后上线&#xff0c;但是看日志经常被一些恶意IP进行攻击&#xff0c;这里准备接入腾讯云的安全以及加速产品edgeone&#xff0c;记录下当时的步骤。 一、nginx配置重定向以及日志格式 ng…

【数据分析】Excel中使用VBA进行宏编程

目录 0 准备工作1 VBA简介1.1 Excel VBA应用程序的构成1.2 事件驱动1.3 宏1.3.1 创建宏1.3.2 宏安全 2 VBA基础2.1 注释2.2 数据类型2.2.1 基本数据类型2.2.2 枚举类型2.2.3 用户自定义数据类型 2.2 变量2.3 常量2.4 运算符2.5 程序结构2.6 过程2.7 函数 3 Excel应用程序开发流…

【Apollo CyberRT】源码分析之 “component” 模块

代码位置 apollo/cyber/component 功能 在自动驾驶系统中&#xff0c;模块&#xff08;如感知、定位、控制系统等&#xff09;在 Cyber ​​RT 下以 Component 的形式存在。不同 Component 之间通过 Channel 进行通信。Component 概念不仅解耦了模块&#xff0c;还为将模块拆…

实现图片分块化(使用einops库)

背景介绍 在进行机器学习的模型训练任务的时候&#xff0c;针对图像数据集的处理&#xff0c;常常会对数据集进行分块的操作&#xff1b;具体到模型结构中&#xff0c;在ViT框架中&#xff0c;把每一个图像看作是一个的patch&#xff0c;每一个patch可以当作是一个NLP领域的一…

mac上搭建hbase伪集群

1. 前言 之前我们已经搭建过了 hbase单点环境&#xff0c;(单机版搭建参见&#xff1a; https://blog.csdn.net/a15835774652/article/details/135569456) 但是 为了模拟一把集群环境 我们还是尝试搭建一个伪集群版 2. 环境准备 jdk环境 1.8hdfs &#xff08;hadoop环境 可选…

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin(2)

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin&#xff08;2&#xff09; 在 Android ScaleGestureDetector检测双指缩放Bitmap基于Matrix动画移动到双指捏合中心点ImageView区域中心&#xff0c;Kotlin-CSDN博客 …

程序员开发要素—Java篇

这是个预留板块&#xff0c;打算写一写作为程序员的基本要素和技术。主要包含基本工具&#xff0c;基础知识&#xff0c;基础插件应用&#xff0c;环境搭建等内容。 具体内容后续补充完整&#xff0c;Ps&#xff1a;请假申请已提交https://blog.csdn.net/qq_18237141/article/…

JavaSE核心基础-循环-知识点

1.循环概念 循环是在满足条件的情况下&#xff0c;反复的做同一件事。 Java语言中的循环语句有三种&#xff0c;分别是for语句、while语句和do-while语句。程序中需要循环处理时&#xff0c;程序员要根据实际问题&#xff0c;选择适当的循环语句。解决循环问题时一定要找到循环…

跟着小德学C++之TOTP

嗨&#xff0c;大家好&#xff0c;我是出生在达纳苏斯的一名德鲁伊&#xff0c;我是要立志成为海贼王&#xff0c;啊不&#xff0c;是立志成为科学家的德鲁伊。最近&#xff0c;我发现我们所处的世界是一个虚拟的世界&#xff0c;并由此开始&#xff0c;我展开了对我们这个世界…

浅析大数据汇总

传统&#xff0c;大数据主要关注数据的采集、存储和处理能力。随着互联网的快速发展&#xff0c;用户在互联网上产生了大量的数据&#xff0c;这些数据包括用户行为数据、社交媒体数据、传感器数据等。传统的数据库技术已经无法满足对这些海量数据的存储和处理需求&#xff0c;…

网络安全B模块(笔记详解)- 越权与下载

1.使用渗透机场景kali中工具扫描服务器场景,将web端口号当作Flag提交; 2.使用渗透机场景windows7访问服务器场景mingling.php,将页面中的Flag提交; 3.使用渗透机场景windows7访问服务器场景mingling.php,分析页面内容,查看系统配置信息,并将产品id的最后5位数作为Flag提…

NLP自然语言处理的发展:从初创到人工智能的里程碑

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;人工智能领域中备受关注的重要分支之一。它使得计算机能够理解、解释和使用人类语言。随着技术的不断发展&#xff0c;NLP经历了从初创时期到深度学习时代的巨大演变&#xff0c;推动了互联网产…

链表相加---链表OJ---两数之和

https://leetcode.cn/problems/add-two-numbers/?envType=study-plan-v2&envId=top-100-liked 对于本题,可以选择用数组实现,那样比较简单;我们这里就用纯链表实现。 纯链表实现有许多细节,比如链表长度不一样,进位,尾结点如果是0我们就要删除尾结点。 首先…

线程调度(Java Android)

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览2.1、线程的属性 三、…

继承基本介绍

Java提供了关键字extends&#xff0c;可以让一个类和另一个类建立父子关系。 public class a extends b{ //b为父类&#xff0c;&#xff0c;a为子类} 继承的特点&#xff1a;子类可以继承父类的非私有成员&#xff1b;子类的对象由子类、父类共同完成 使用继承可以减少重复…