数据结构(栈队列链表)

Posted 栗子~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(栈队列链表)相关的知识,希望对你有一定的参考价值。

文章目录

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


数据结构(栈、队列、链表)

1、栈

概述:
1)一种特殊的线性表,仅能在线性表的一端操作;
2)栈顶允许操作,栈底不允许操作;
3)先进后出,或者说是后进先出;
术语:
进入栈的过程叫做进栈;
出去栈的过程叫做出栈;
栈的最上面的元素称为栈顶;
栈的最内的元素,称为栈底;

例子 :1、2、3、4、5
1、2、3依次进栈,
然后出栈、3、2
在进栈4、5
过程如下:


2、队列

概述:
1)一种特殊的线性表
2)先进先出
3)只允许在队列头进行删除操作
4)只允许在队列尾进行插入操作
术语:
进行插入操作叫做入队;
进行删除操作叫做出队;
示例:

3、链表

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

3.1、单向链表结构


术语:
1)item:数据域
2)next:指针域
3)node:节点
4)head:头指针
说明:
head指向链表中第一个节点;
链表中最后一个节点指向null;
当链表中无节点的时候,head指向null;

特点:
1)当链表创建时,无需考虑创建的大小,且大小可以无限延续;
2)访问元素时,链表无法跳过前一节点访问后续节点,即无法通过下标进行访问,只能从头遍历,找到想要访问的元素;
3)链表在插入和删除时,时间复杂度O(1),效率较高;
4)链表查找效率低;

注意事项:
在java中没有指针的概念,而类似的指针在java中都是通过引用来实现的,但是为了突出我们的理解,仍然通过指针进行描述,下面是用代码来描述在java中,如何用引用来实现指针的逻辑。

public LNode
   int data;  //数据域
   LNode next; //下一个指针的引用

3.2、双向链表结构

相比单链表,除了包含单链表的部分,还增加的pre前一个节点的指针。


结构说明:
双向链表不仅有head指针指向第一个节点,而且有tail指针指向最后一个节点
每一个节点由三部分组成:item储存数据、prev指向前一个节点、next指向后一个节点
双向链表的第一个节点的prev指向null
双向链表的最后一个节点的next指向null

特点:
双向链表即可从头遍历到尾,也可以从尾遍历到头,因为双向链表的过程是相向的,
因为它既有指向前一个节点的指针也有指向后一节点的指针;

以上是关于数据结构(栈队列链表)的主要内容,如果未能解决你的问题,请参考以下文章

Java栈[数组,单链表],队列数组,链表和循环队列的实现

栈 & 队列

栈 & 队列

数据结构-栈队列和链表

栈与队列

数据结构——队列和栈