顺序结构实现【数据结构】

虽然在数据结构当中是先出现的线性表,然后出现的是数组
一:线性表的顺序存储结构
顺序映象:用一组地址连续的存储单元依次存放线性表当中的数据元素
线性表的起始地址:线性存储第一个数据元素的地址,我们也称作是基地址
我们知道,在我们定义数组的时候,数组名就是第1个元素的地址,我们可以利用数组名,对线性表进行简单的操作,因为我们一旦定义了数组名就相当于知道了线性表的起始地址,从而可以迅速的访问到线性表,对线性表进行一系列的操作

以存储位置相邻来表示有序对<ai-1,ai>,我们都知道,尖括号代表的是有顺序的存储

地址码是有大有小的

在这里插入图片描述
在线性表讨论顺序结构存储时,我们的脚标是从1开始,而不是从0开始,这应该引起我们的注意

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解释2:为什么定义当前的长度以及当前分配的存储容量?
我们都知道,对于一个数组来说,在一开始的时候就对于存储空间进行了分配,是利用动态分配还是静态分配,分配空间的时候都是在一开始就已经决定了,对于静态分配空间来说,比如一开始我们分配100个空间,但实际用到的空间只有10个,那么浪费的就有90个空间但实际用到的空间只有10个,那么浪费的就有90个空间,实际用到的空间随时在变化,因此我们定义当前长度以及当前分配的存储容量,当前分配的存储容量,就是一开始我们被分配给到的空间,当前长度是我们数组空间实际占用的空间,
圆圈:由于线性表的长度随着我们存储数据的进行,它的长度随时在变化,那么相对于静态分配空间来说,我们必须采用动态分配,是必须采用动态分配,这样我们更方便对于线性表当中的数据元素进行相应的操作
解释1:第1个井号代表的是线性表存储空间的初始分配量,也就是第一次分配给我们的空间大小
第2个警号是当我们存储数据时,空间不够用时,我们向内存一次申请的字节数的大小,是人为来进行分配的,根据下面的操作,综合考虑的结果
*elem:指向数组地址的指针,是来找到存储空间的位置信息的
ElemType:抽象数据类型的概括
SqList; //俗称顺序表----是重定义
顺序表是线性表存储结构的一种特殊方式,范围是比顺序表要小很多的
为什么定义结构体:结构体体现了线性表的存储结构,包括哪些东西,就像是我们做菜一样,我们要知道我们所需要的蔬菜是什么,只有把这些东西准备好,我们才能够进行做菜的操作,这里的做菜,我们就是可以理解成对线性表进行一系列的操作
×××
基本操作都是对于线性表来说的,虽然我们现在有了顺序表结构,那么我们把我们的任务交给顺序表来进行实现,帮我们完成一系列的操作,就像是我们开设一家公司,开始我们都是自己白手起家,所有的事情都由我们自己来做,渐渐的随着操作越来越多,就出现了一些员工,我们就可以把我们的工作交给员工来完成,这里指的就是,我们把线性表能够实现的一些操作,或者说把线性表具有的一些操作,来让他下面的顺序表来实现,来让他下面的顺序表来实现因为顺序表是线性表在物理上按顺序存储时的一种表现形式,
我们再来回忆一下adt,我们知道线性表或者说线性结构的一系列操作都概括在adt当中,
小知识点:Prant函数,即输出函数,就是我们所理解的遍历函数在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

leetcode590. N叉树的后序遍历

给定一个 N 叉树&#xff0c;返回其节点值的后序遍历。 例如&#xff0c;给定一个 3叉树 : 思路&#xff1a;先遍历所有孩子&#xff0c;再放入自己。 /* // Definition for a Node. class Node {public int val;public List<Node> children;public Node() {}public No…

链表的形式【F】

数据元素之间的关系在计算机中有两种表示方法: 顺序映象, 非顺序映象. 对应两种存储结构: 顺序存储结构, 链式存储结构 线性结构就是一种逻辑关系&#xff0c;方便我们对数据进行研究但是不考虑真实的存储结构 数据是什么&#xff1f; 数据是能够反应一定内容的一组数据类型的…

单链表的实现【数据结构】

思考&#xff1a; 1.是否能够将原来指针的方向改为向前指向呢&#xff1f; 2.是否能够有两个指针域的操作呢&#xff1f; 了解&#xff1a; 单链表是应用最广泛的一种形式&#xff0c;还有双向链表以及循环链表&#xff0c;这些都是要进行讨论的 结构体定义的是什么&#xff1f…

(详细图解)VS2017安装教程

VS 2017 版本同 15 版一样&#xff0c;细分为三个版本&#xff0c;分别是&#xff1a; 社区版&#xff08;Community&#xff09;&#xff1a;免费提供给单个开发人员&#xff0c;给予初学者及大部分程序员支持&#xff0c;可以无任何经济负担、合法地使用。企业版&#xff1a…

链表的代码实现【数据结构F】

单链表的特点&#xff1a;每次结点的分配都是动态进行分配的&#xff0c;melloc函数实现的功能是开辟一块新的内存空间&#xff0c;但是返回的是一个地址&#xff0c;只能是地址&#xff0c;没有别名的事情&#xff0c;那就有点难办了&#xff0c;这是一种间接的寻址&#xff0…

(图文详细)如何使用Code::Blocks运行c/cpp文件?

1) 新建源文件 打开 CodeBlocks &#xff0c;在上方菜单栏中选择 “文件 --> 新建 --> 空白文件”&#xff0c;如下图所示&#xff1a; 或者直接按下 Ctrl Shift N 组合键&#xff0c;都会新建一个空白的源文件&#xff0c;如下图所示&#xff1a; 在空白源文件中输入…

数据结构【插入操作具体代码的实现】

插入操作具体代码的实现 单链表delete的操作&#xff1a;

Linux GCC简明教程(编写c语言程序)

市面上常见的 Linux 都是发行版本&#xff0c;典型的 Linux 发行版包含了 Linux 内核、桌面环境&#xff08;例如 GNOME、KDE、Unity 等&#xff09;和各种常用的必备工具&#xff08;例如 Shell、gcc、VIM、Firefox 等&#xff09;&#xff0c;国内使用较多的是 CentOS、Ubunt…

解决VS'scanf':this function or variable may be unsafe.`(VS安全函数问题)

在 VS&#xff08;Visual Studio&#xff09;下编译C语言程序&#xff0c;如果使用了 scanf()、gets()、strcpy()、strcat() 等与字符串读取或操作有关的函数&#xff0c;有时候VS会报错&#xff0c;提示该函数可能不安全&#xff0c;并且建议替换为带有_s后缀的安全函数&#…

双向循环链表【数据结构】

单链表的缺点以及对单链表缺点的改进和双向链表的理解操作 双向循环列表的插入操作 线性结构是一种逻辑结构&#xff0c;顺序存储结构&#xff0c;链式存储结构

什么是编译器?(程序是怎么跑起来的)

我们平时所说的程序&#xff0c;是指双击后就可以直接运行的程序&#xff0c;这样的程序被称为可执行程序&#xff08;Executable Program&#xff09;。在 Windows 下&#xff0c;可执行程序的后缀有 .exe 和 .com&#xff08;其中 .exe 比较常见&#xff09;&#xff1b;在类…

Java 的内存管理机制是怎样的?

Java 的内存管理机制是怎样的&#xff1f;

队列【数据结构】

注意 我们的销毁队列是否能够成功取决申请空间的方式&#xff0c;动态申请出来的空间都是可以进行销毁的&#xff0c;对于静态的话是不能直接进行销毁的 ADT 相当于是c当中的类结构&#xff0c;是处理数据时&#xff0c;提前对数据进行一定的管理操作&#xff0c;就是将某一件事…

C++继承详解

废话不多说直接上代码 class 派生类名:&#xff3b;继承方式&#xff3d; 基类名{ 派生类新增加的成员 }; 继承方式限定了基类成员在派生类中的访问权限&#xff0c;包括 public&#xff08;公有的&#xff09;、private&#xff08;私有的&#xff09;和 protected&…

串【数据结构F】

先来讲解一下串结构的概念性质的东西&#xff0c;以及我们需要注意的一些问题 串结构简单的ADT以及一些基本的操作 最小操作函数&#xff1a;就是功能已经达到了最小的功能实现了&#xff0c;不能继续执行更大的功能&#xff0c;类似于我们在家盖房子一样&#xff0c;水泥的…