2、栈和队列
栈和队列是运算受限的线性表。
栈:只能后进来的元素先出去。
队列:只能先进来的元素先出去。
1、栈(Stack)
后进先出,可以使用数组和单链表实现。
入栈:push
出栈:pop
取出栈顶元素:peek
2、队列(Queue)
先进先出,可以使用循环数组和单链表实现
队尾,进来的一端:rear
队首,出去的一端:front
入队:enqueue
出队:dequeue
2.1 双端队列
指两端都可以入队和出队的队列。
若只允许一段出入,则等同于栈。
3、Java中的栈和队列
栈:Stack类,它继承于Vector类,已不推荐使用。
队列:Queue接口,它继承于Collection接口。
双端队列:Deque接口,它继承于Queue接口,推荐用来实现栈操作。LinkedList实现了Deque接口。
使用双端队列实现栈操作:
static void test03(){ //创建一个栈 Deque s = new LinkedList(); //入栈 s.push("111"); s.push("222"); s.push("333"); while (!s.isEmpty()){ //出栈 System.out.println(s.pop()); } }
在遍历二叉树时,可以借助栈和队列来实现:Java中二叉树的遍历、查找