文章目录
- 前言
- 数据结构(栈、队列、链表)
- 1、栈
- 2、队列
- 3、链表
- 3.1、单向链表结构
- 3.2、双向链表结构
 
 
 
 
前言
  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
数据结构(栈、队列、链表)
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
特点:
 双向链表即可从头遍历到尾,也可以从尾遍历到头,因为双向链表的过程是相向的,
 因为它既有指向前一个节点的指针也有指向后一节点的指针;



















