数据结构中 线性表,栈,队列,算法之间的联系与区别

一。链表为什么需要

        在程序中,经常需要将一种(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录他们,传进传出函数等。一组元素可能发生变化(像增加或删除元素。)

       对于这种需求,最简单的解决方案便是将这样一组元素看成一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种意义的信息,或者表示数据之间的某种关系。

       这样的一组序列元素的组织形式,我们可将其抽象为线性表。一个线性表示某类元素的一个集合,还记录元素之间的一种顺序关系。线性表是最基本的数据结构之一,在实际程序中应用非常广泛,他还经常被用作复杂的数据结构的实现基础。

线性表的实际存储方式,有两种实现模型:

  • 顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。
  • 链表,将元素存放在通过链接构造起来的一系列存储块中。

顺序表的基本形式:

这个主要表现的是顺序表中元素的存储,注意与下年的区别

          1)数据元素本身连续存储,每个元素所占的存储单元大小固定相同。

          2)元素外置的顺序表,将实际数据元素另行存储,而顺序表中各单元位置保存对应元素的地址信息(即链接)。。由于每个链接所需的存储量相同,通过上述公式,可以计算出元素链接的存储位置,而后顺着链接找到实际存储的数据元素。

顺序表的两种基本实现方式:

扫描二维码关注公众号,回复: 4221064 查看本文章

        主要表示的是如何表达这个顺序表(两部分),即 一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而需记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。

1)一体式结构 

存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。

一体式结构整体性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。

2)分离式结构

表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过连接与基本表对象关联。

顺序表在创建的时候要考虑两个问题:

  • 元素存储区的替换
  • 元素存储区的扩充

这也是链表产生的原因

链表在创建的时候,由于每个节点存有下一个节点的指向,所以不需要预估大小

更通俗的将:


栈是线性表的一种应用,我们无需关心其在物理上的存储位置,只需关心栈的相关操作即可

顺序表和链表解决的是数据如何存放的,栈描述的是数据是如何操作

栈的引用:
    python对表达式的解析
    
    
对已经构造出来的线性表可以有多种排序,而多种排序就是不同思维的体现(算法)

列表和顺序表的操作,要保证在操作时不能出现元素节点的丢失,也就是指向的执行顺序

猜你喜欢

转载自blog.csdn.net/qq_35810838/article/details/84479990