或www.play998.com永利皇宫者说是后进先出

当前位置:永利皇宫登录 > www.play998.com永利皇宫 > 或www.play998.com永利皇宫者说是后进先出
作者: 永利皇宫登录|来源: http://www.thetaborhood.com|栏目:www.play998.com永利皇宫

文章关键词:永利皇宫登录,存储密度

  链表的每个节点除了数据域用来存储元素外,还要额外的设置指针域,用来存储用来存储指示元素之间的逻辑关系的指针。存储密度是指数据元素本身所占的存储量和整个结点结构所占的存储量之比。假设单链表数据元素本身的存储量为N,指针域所占的存储量为M,则存储密度为:N/(N+M)。

  存储密度越大,空间利用率越高,显然顺序表的存储密度为1,如果单纯的从存储密度来讲,链表的这种存储方式是不经济的,基于此,如线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表作为存储结构。

  ① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。

  ②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

  优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小(1),存储空间利用率低。

  存储密度 = (结点数据本身所占的存zhuan储量)/(结点结构shu所占的存储总量)

  定义:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

  它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。

  简而言之,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。

  数据的逻辑结构和物理结构是数据结构的两个密切相关的方面,同一逻辑结构可以对应不同的存储结构。www.play998.com永利皇宫

  算法的设计取决于数据的逻辑结构(代码逻辑),而算法的实现依赖于指定的存储结构(物理地址层)。

  1.数组:在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

  2.栈:(点击打开链接)是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

  3.队列:(点击打开链接)一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。

  4.链表:是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

  5.树:(点击打开链接)是包含n(n0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:

  (1)有且仅有一个结点 K0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。

  6.图:(点击打开链接)是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

  7.堆:在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。

  8.散列表(Hash table,也叫哈希表):(点击打开链接)若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。

  顺序存储结构是在内存中开辟一个连续的空间用来存储数据,因此对于内存的需求和苛刻,必须是连续的空间.在数据查找(特别是不按照规律排列的数据),时间复杂度教少.效率高.

  链式存储结构是采取连表指针来指示数据的存储位置,这就可以是在内存中随意的存储,没有必须连续储存空间的要求,对于内存的要求相对教容易.但是要是是从小到大顺序排列的数据,链式存储结构的时间复杂度教小,效率高.但是要是不规则排布的数据一般时间复杂度较高,效率更低

  数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。

  每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。

  数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。

  栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。

  栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以,栈常应用于实现递归功能方面的场景,例如斐波那契数列。

  队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队,示例图如下:

  链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

  添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快;

  树是一种数据结构,它是由n(n=1)个有限节点组成一个具有层次关系的集合。把它叫做 “树” 是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

  二叉树是一种比较有用的折中方案,它添加,删除元素都很快,并且在查找方面也有很多的算法优化,所以,二叉树既有链表的好处,也有数组的好处,是两者的优化方案,在处理大批量的动态数据方面非常有用。

  二叉树有很多扩展的数据结构,包括平衡二叉树、红黑树、B+树等,这些数据结构二叉树的基础上衍生了很多的功能,在实际应用中广泛用到,例如mysql的数据库索引结构用的就是B+树,还有HashMap的底层源码中用到了红黑树。这些二叉树的功能强大,但算法上比较复杂,想学习的话还是需要花时间去深入的。

  散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。

  这里的对应关系 f 成为散列函数,又称为哈希 (hash函数),而散列表就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里,这种存储空间可以充分利用数组的查找优势来查找元素,所以查找的速度很快。

  哈希表在应用中也是比较常见的,就如Java中有些集合类就是借鉴了哈希原理构造的,例如HashMap,HashTable等,利用hash表的优势,对于集合的查找元素时非常方便的,然而,因为哈希表是基于数组衍生的数据结构,在添加删除元素方面是比较慢的,所以很多时候需要用到一种数组链表来做,也就是拉链法。拉链法是数组结合链表的一种结构,较早前的hashMap底层的存储就是采用这种结构,直到jdk1.8之后才换成了数组加红黑树的结构,其示例图如下:

  从图中可以看出,左边很明显是个数组,数组的每个成员包括一个指针,指向一个链表的头,当然这个链表可能为空,也可能元素很多。我们根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素。

  哈希表的应用场景很多,当然也有很多问题要考虑,比如哈希冲突的问题,如果处理的不好会浪费大量的时间,导致应用崩溃。

  堆是一种比较特殊的数据结构,可以被看做一棵树的数组对象,具有以下的性质:

  将根节点最大的堆叫做最大堆或大根堆,www.play998.com永利皇宫根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。

  堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。

  图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

  图是一种比较复杂的数据结构,在存储数据上有着比较复杂和高效的算法,分别有邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构。

  顺序存储中,相邻数据元素的存放地址也相邻,内存中存储单元的地址必须是连续的,存储密度 = 1。

  在做插入/删除操作时,平均每次移动表中的一半元素,因此表中数据量越大效率越低。

  需要预先分配足够大的存储空间。过大可能会导致存储空间闲置,过小会造成溢出。

  链式存储中,逻辑上相邻的数据元素,物理存储位置不一定相邻,使用指针实现元素之间的逻辑关系。链表的存储空间是动态分配的,存储密度 1。

  ps:存储密度是指一个节点中数据元素所占的存储单元和整个节点所占的存储单元之比

  存储密度:在数据结构中,结点数据本身所占的存储量和整个结点结构所占的存储量之比。

  假设单链表的结点的数据占的存储量为N,结点的指针域所占的存储量为M,则存储密度 = N / (N+M),所以单链表的密度是小于1的。

  按逻辑结构可以分为集合、线性结构、非线性结构;按存储结构可以划分为顺序、链式、索引、散列存储结构。下面主要区分一下顺序和链式存储

  问题:举个例子你需要在手机屏幕上横向显示5个Button,每个Button各占1/5,那么怎么可以在不同宽度手机,...

  链式存储结构,又叫链接存储结构。在计算机中用一组任意的存储单元存储线性表的

  大(=1),存储空间利用率高。 缺点:插入或删除元素时不方便。 链式存储时,相邻

  元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系

  。 1、结构数据本身所占存储量 = 数据域所占存储量 2、结点结构所占

  :顺序存储结构是一个挨着一个,一个空间对应一个数据;链式储存每个结点都含有指针区域,储存空间较大,故

  逻辑关系额外开辟空间 插入和删除操作需要移动大量元素,平均时间复杂度O(n) 随机存取,可快速存取表中任一元素 对存储要求高,会出现存储碎片 顺序存储 1、线性表是一种...

  在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上, 链式存储比顺序存储要高。 ...优点:

  大(=1),存储空间利用率高。 缺点:插入或删除元素时不方便。 链式存储时,相邻

  元素可随意存放,但所占存储空间分两部分,一部分存放结点值,www.play998.com永利皇宫另一部分存放表示结点间关系

  1.从存储的角度考虑: 顺序表的存储空间是静态分布的,在程序执行之前必须明确规定它的规模,也就是说事先对MAXSIZE要有合适的设计,过大造成浪费,过小容易溢出。...链式存储

  元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。 优点:

  特殊矩阵的压缩存储 矩阵的常规存储:将矩阵描述为一个二维...压缩存储:若多个

  空间,且零元素不占存储空间。 1、对称矩阵 存储方法:只存储下(或上)三角包括主对...

  ,它的实现可以分为顺序存储和链式存储。本篇主要是顺序存储知识的...同时顺序表

  容量,如DVD和蓝光盘等,而不需要特殊的准备步骤。 这种可扩展技术通过光盘的3D体积进行信息的多层次

  结点 必须静态分配连续空间 2、链接存储 优点: 插入和删除比较灵活,不需要大量移动结点 动态...

  大(=1?),存储空间利用率高。缺点:插入或删除元素时不方便。 ②链式存储时,相邻

  元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系

  较大。 ② 顺序存储结构需要分配一整块比较大存储空间,所以存储空间利用率较低。 ③ 逻辑上相邻的两个元素在物理上也是相邻的,通过元素的逻辑序号可以直接其元素 值,即具有随机存取...

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!