和queue和stack具有相同的数据结构,但是其不同点在于删除元素的方法,stack移除元素的操作是移除stack中最顶部的元素,而queque则是移除最底部的元素.总结起来:stack是后进先出,queque是先进先出.
基础知识回顾
queque
queque就像是我们日常生活中order的场景,当我们买票时,先进入队列的人,先买到票,而后离开队列,新加入的人则按照规则排在队列的最后.queque一般包含如下方法:
dequeue()
从队列中移除元素
enqueue()
向队列中添加元素
isEmpty()
检查是否为空
queue的实现
使用链表实现queque
使用链表实现queque的方法和链表实现stack的方法大同小异,我的这篇文章描述了stack的实现.下面的java代码描述了如何使用链表实现queque.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| package com.andy.algorithms;
public class LinkedQueueofString {
private Node item; private Node first, last;
public boolean isEmpty(){ return first == null; }
public void enqueue(String item) {
Node oldlast = last; last = new Node(); last.item = item; last.next = null; if(isEmpty()) first = last; else oldlast.next = last; }
public String dequeue(){ String item = first.item; first = first.next; if(isEmpty()) last=null; return item; }
private class Node{ private String item; private Node next; } }
|