当前位置:首页 » 服务存储 » 链式存储占内存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

链式存储占内存

发布时间: 2023-03-22 20:31:30

‘壹’ 链式存储结构和顺序存储结构的区别

区别如下:

1、链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的。

2、链式存储适用于在较频繁地插入、删除、更新元素是,而顺序存储结构适用于频繁查询时使用。

3、顺序比链式节约空间,是因为链式结构每一个节点都有一个指针存储域。顺序支持随机存取,方便操作。链式的要比顺序的方便,快捷。

官方一点来说可以使用网络的介绍:顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。

当然不得不说一般这种官方的解释都是不太适合我的,所以用小甲鱼的方式来说这个概念的话,简单来说就是,用一段连续的地址存放数据元素,数据间的逻辑关系和物理关系相同。

优点1:存储密度大,空间利用度高,比链式存储节约空间。

优点2:存储操作上方便操作,顺序支持随机存取,查找会比较容易。

缺点1:插入或者删除元素时不方便,花费的时间更多。

‘贰’ 链表中每个节点所占用的储存空间是连续的,但节点之间在空间上可以连续也可以不连续 对这句话不是很明白

一个链表有很多个节点,各个节点之间通过指针连接起来,所以各个结点之间的位置可以不连续,也就是可以放在不同的位置,所以在空间上可以是不连续的;但对于一个节点,因为节点内部是一个整体,所以就要占用连续的存储空间。

队列是先进先出的栈是先进后出的都是线性表线性表是最基础、最常用的数据结构,线性表中数据元素都是一对一的对应关系。可以不连续,它的存储空间分两段,一段存放数据,另一段存放着地址,链表是通过地址将数据串联起来的数组必须是连续的存储空间。

(2)链式存储占内存扩展阅读:

一个链表或者多个链表使用独立的存储空间,一般用数组或者类似结构实现,优点是可以自动获得一个附加数据:唯一的编号,并且方便调试;缺点是不能动态的分配内存。当然,另外的在上面加一层块状链表用来分配内存也是可以的,这样就解决了这个问题。

这种方法有时候被叫做数组模拟链表,但是事实上只是用表示在数组中的位置的下标索引代替了指向内存地址的指针,这种下标索引其实也是逻辑上的指针,整个结构还是链表,并不算是被模拟的(但是可以说成是用数组实现的链表)。

‘叁’ 顺序存储结构和链式存储结构优缺点

顺序存储结构和链式存储结构的区别

链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的;
链式存储适用于在较频繁地插入、删除、更新元素时,而顺序存储结构适用于频繁查询时使用。

顺序存储结构和链式存储结构的优缺点:

空间上

顺序比链式节约空间。是因为链式结构每一个节点都有一个指针存储域。

存储操作上:

顺序支持随机存取,方便操作

插入和删除上:

链式的要比顺序的方便(因为插入的话顺序表也很方便,问题是顺序表的插入要执行更大的空间复杂度,包括一个从表头索引以及索引后的元素后移,而链表是索引后,插入就完成了)
例如:当你在字典中查询一个字母j的时候,你可以选择两种方式,第一,顺序查询,从第一页依次查找直到查询到j。第二,索引查询,从字典的索引中,直接查出j的页数,直接找页数,或许是比顺序查询最快的。

‘肆’ 链接存储的存储结构所占存储空间_______。

写在前面的话:数据结构很多人都是只看不去实战,这样很难取得很好的效果,我会在每个知识点下面配套几道从Leetcode和剑指offer上找到的经典题目(比如本章说完链表以后,会配套LeetCode.206等题目)。

程序这种东西还是多敲键盘比较好,纸上得来终觉浅,绝知此事要躬行。

数据结构中的线性表 是理解图,堆栈,二叉树的基础,他的官方定义为:

线性表 是 零个或多个数据元素的有限序列。

比如:a1, a2, a3 ,a4, ...... , ai-1, ai, ai+1,....., an

ai-1 是ai的前驱元素,而ai+1是ai的后继元素。我们可以得知,当i=2, ...., n-1时,他们只有唯一的一个前驱元素和后继元素。

并且,在线性表中,a1~an所代表的元素必须是相同的数据类型的元素。(比如a1-an代表有n个不同类型的人,但他们都是人,你不能在其中添加一个帽子的存储)。

线性表在物理结构上可以分为:顺序存储结构和链表存储结构。

第一节:首先我们了解下顺序存储结构:
顺序存储结构就是在内存空间中开辟一片连续的空间,然后把数据按照顺序进行存储的一种方式。

他包含三个属性:1、存储空间的起始位置(也就代表我们定义了一个数组)2、最大的存储容量(数组最大长度)3、线性表的当前长度

属性2和3的区别是:数组的长度是基本不变的,这是我们在申请内存空间的时候就已经确定好的,而我们的线性表的长度是代表着元素个数,是不确定的长度。则两者的关系为: 线性表的当前长度<=数组长度;

1 顺序存储结构的插入与删除:
1.1、插入思路:
①、我们首先需要考虑异常(插入位置异常,插入后的长度异常等)

②、从最后一个元素遍历到插入位置,分别将每一个元素向后移动一个位置;

③、插入目标元素,表长加1;

1.2、删除思路:
①、我们仍然需要首先考虑异常(删除位置错误等)

②、查找到需要删除的位置,遍历将其后的每一个元素向前进行移动。

2 总结
我们可以看出,在插入算法中,顺序存储结构中元素在插入位置的过程中,多数元素都需要进行移动,来给插入的元素腾位置。并且,在删除算法中也是类似的道理。我们计算下他们的时间复杂度:顺序存储结构在读取数据的时候,因为可以按照list[index]进行读取,所以时间复杂度为O(1),但在插入和删除算法的时候,平均的时间复杂度为O(n);

我们可以看出顺序存储结构的优点和缺点:

优点是:不需要为表示元素之间的逻辑关系而增加额外存储空间,可以快速的存取表中的任一位置的元素。

缺点是:插入和删除操作需要移动大量的元素。当线性表变化较大的时候,难以确定存储空间的容量。

‘伍’ 线性表的链式存储结构和顺序存储结构的区别

顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素.由于表中各个元素具有相同的属性,所以占用的存储空间相同.因此,在内存中可以通过地址计算直接存取线性表中的任一元素.这种结构的特点是逻辑上相邻的元素物理上也相邻.用顺序结构存储的线性表称作顺序表.
线性表按链式存储时,每个数据元素
(结点)的存储包括数据区和指针区两个部分.数据区存放结点本身的数据,指针区存放其后继元素的地址
(没有后继元素时设置为空字符(Null)..只要知道该线性表的起始地址
(记录在头指针中),表中的各个元素就可通过其间的链接关系逐步找到

‘陆’ 顺序存储结构和链式存储结构的优缺点

存储空间
顺序存储结构是要求事先分配存储空间的,即静态分配,所以难以估计存储空间的大小。估计过大会造成浪费,估计太小又容易造成空间溢出。
 而链式存储结构的存储空间是动态分配的,只要计算机内存空间还有空闲,就不会发生溢出。
 另外还可以从存储密度的角度考虑,存储密度的定义公式为:一般来说,存储密度越大,存储空间的利用率就越高。
显然,顺序存储结构的存储密度为1,而链式存储结构的存储密度小于1。
运算时间
顺序表是一种顺序存储结构,对表中任一结点都可以在O(1)时间复杂度下直接访问;而访问链表中的某个结点时,必须从头指针开始沿着链表顺序查找,时间复杂度为O(n)。
链表顺序查找,时间复杂度为O(n)。
 因此,如果对线性表的操作以查找为主,则采用顺序存储结构较好;若以插入、删除为主,则采用链式存储结构为宜。

‘柒’ 为什么说链式存储既提高了存储的利用率,又降低了存储的利用率

所谓提高了存储利用率是因为链式不要求内存连续,零散的内存都可以被利用起来用作链式单棚巧元存储。
所谓降低了存储利用率是因为总体而言相同的内容链式存储比顺序存庆和仔储要求的内存誉汪空间更大,除数据保存外还需要保存指向关系。

‘捌’ 线性表的链式存储结构与顺序存储结构所需的空间是否相同

不相同,链式储存结构要多一些。
比如存储int型的数据,顺序储存结构只要一个数组就可以了,而链式储存结构需要多存储一个指针。

‘玖’ 线性表链式存储结构和顺序存储结构的存储空间一定连续吗

不一样,线性存储每个元素只要存元素的内容,链式存储还需要多一块区域来存储相邻节点的地址

‘拾’ 线性表链式存储结构的优点和缺点有什么

一、线性表链式存储结构的优点:

1、均匀性:虽然不同数据表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度。对于线性链表,可以从头指针开始,沿各结点的指针扫描到链表中的所有结点。

2、有序性:各数据元素在线性表中的位置只取决于它们的序号,数据元素之前的相对位置是线性的,即存在唯一的第一个和最后一个的数据元素,除了第一个和最后一个外,其它元素前面均只有一个数据元素(直接前驱)和后面均只有一个数据元素(直接后继)。

二、线性表链式存储结构的缺点:

线性表链式存储结构不要求逻辑上相邻的元素在物理位置上是相邻,因此,它没有顺序存储结构所具有的弱点,但也同时失去了顺序表可随机存取的优点。

(10)链式存储占内存扩展阅读:

线性表链式存储结构的其他介绍:

一般在计算机的硬盘中,文件都是链式存储的。我们知道,多个扇区组成一个簇,簇是计算机存储数据的基本单位。

而一个文件是存储在多个在空间上也许并不相连的簇中的,这就是链式存储。但是为了能够读取出这个文件,计算机会在该文件第一部分的尾部写上第二部分所在的簇号。

另一部分的尾部又写上第三部分,以此类推,最后一部分写上一段代码,表示这是该文件的最后一部分。值得一提的是,高簇号在后。(如代码所示的1234实为簇3412)文件所占簇可认为是随机分配的。