栈,队列分析模拟

1.栈

栈stack:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
擅长操作尾.
特点:后进先出类似于瓶子,只有一个出口
栈,队列分析模拟
栈,队列分析模拟
以上图借鉴于百度百科
栈,队列分析模拟
我们来看下源码、栈,队列分析模拟
发现底层就是这么写的,继承与Vector,Vector可以把它当做linkedlist,
我们看下push这个方法,调用的addElement这个方法就来自Vector类
栈,队列分析模拟
我们再来看下pop这个方法
栈,队列分析模拟
底层调用的removeElementAt也是来自于vector
栈,队列分析模拟
再来看下peek这个方法,一样底层调用的还是Vector的elementAt
栈,队列分析模拟
栈,队列分析模拟
所以说栈,其实就是特殊的链表,底层实现大部分都是相同的

2.队列

队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

单向队列(Queue):先进先出(FIFO),只能从队列尾插入数据,只能从队列头删除数据.
双向队列(Deque):可以从队列尾/头插入数据,只能从队列头/尾删除数据.
擅长操作头和尾.
栈,队列分析模拟
栈,队列分析模拟
我们来看下它的实现类LinkedBlockingDeque
栈,队列分析模拟
我们看下期中的remove方法
栈,队列分析模拟

自己也提供了
栈,队列分析模拟
再来看看它父类抽象类AbstractCollection中也已经有了实现
栈,队列分析模拟
所以其实总的来说,队列也是相当于一个特殊的链表,栈,队列,链表的构成方式大同小异
若有差错,还望指正,共勉