数据结构 3 线性表,栈,队列

线性表是由N个数据元素组成的有序序列。

  它在计算机中有顺序存储结构链式存储结构

  顺序存储结构:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中,也就是一组连续的存储单元。

  优点:知道某个元素的存储位置,通过计算就能知道其他元素的存储位置。

  缺点:新增和删除需要调整其他数据元素的存储地址,麻烦。

  链式存储结构:逻辑上相邻的数据元素不一定存储在物理上相邻的存储单元中,每个存储单元出了数据元素外还存有下一个数据元素所在的地址。

  优点:新增和删除时,不需要调整其他数据元素,只需要修改相应的地址,比如在 1|a|2,2|b|3,3|c|null的a和b元素中插入一个d,只需要1a|4,2|b|3,c|null,4d|2这样就行了。

  缺点:存取时必须从链表首节点进入,一个一个往下找,查询慢。

栈是一种特殊的线性表。

插入和删除操作都只能在栈顶进行,也就是,后进先出。

 

其实我们编程,程序执行的顺序,就是栈的入栈和出栈顺序

 当我们main方法里调用func1时,会把方法main和它的参数压到栈底,再压入方法func1和它的参数,fun2同理,出栈就是方法实际执行的过程。这也是为什么,main的局部变量a,b传给了func1,假如func1中修改了它们,但是执行完func1后执行c=a+b时,发现a.b都还是原来的值,因为在函数调用栈中,它们根本不在一个内存位置(当然我们加上ref 关键字,就可以让func1的参数a,b引用main的参数a,b,实现改变)。

 

 

 

队列也是一种特殊的线性表

只允许在一端插入,在另一端删除,也就是先进先出。

 

 

 

双端队列仍然是一种线性表

 

 栈和队列能实现的功能双端队列都能实现。

我们redis的队列类型,就是双端队列。

另外我们常用的string字符串和数组,都是线性表。

posted @ 2021-01-01 20:44  luytest  阅读(173)  评论(0编辑  收藏  举报