Java实现Queue类
2015-09-06 15:52
471 查看
Java实现Queue类
import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Scanner; public class Queue<Item> implements Iterable<Item> { private int N; private Node<Item> first; private Node<Item> last; private static class Node<Item> { private Item item; private Node<Item> next; } public Queue() { first = null; last = null; N = 0; } public boolean isEmpty() { return first == null; } public int size() { return N; } public Item peek() { if(isEmpty()) throw new NoSuchElementException("Queue underflow"); return first.item; } public void enqueue(Item item) { Node<Item> oldlast = last; last = new Node<Item>(); last.item = item; last.next = null; if(isEmpty()) first = last; else oldlast.next = last; N ++; } public Item dequeue() { if(isEmpty()) throw new NoSuchElementException("Queue underflow"); Item item = first.item; first = first.next; N --; if(isEmpty()) last = null; return item; } public String toString() { StringBuilder s = new StringBuilder(); for(Item item : this) s.append(item + " "); return s.toString(); } public Iterator<Item> iterator() { return new ListIterator<Item>(first); } private class ListIterator<Item> implements Iterator<Item> { private Node<Item> current; public ListIterator(Node<Item> first) { current = first; } public boolean hasNext() { return current != null; } public void remove() { throw new UnsupportedOperationException(); } public Item next() { if(!hasNext()) throw new NoSuchElementException(); Item item = current.item; current = current.next; return item; } } public static void main(String[] args) { Queue<String> q = new Queue<String>(); Scanner in = new Scanner(System.in); while(in.hasNext()) { String item = in.next(); if(!item.equals("-")) q.enqueue(item); else if(!q.isEmpty()) System.out.println(q.dequeue()); System.out.println("(" + q.size() + " left on queue)"); } } }
相关文章推荐
- iOS开发--UICollectionView网格视图
- Bluetooth的子协议学习系列-HL
- UITabBarController 【标签控制器】自己的见解
- uibutton和uiimageview图片不变形设置
- UIColor和UIImage的相互转换
- 解决UIImageView的tintColor无效的问题
- iOS开发--标签视图控制器--UITabBarController
- UISwitch(开关)
- true、false和1、0
- UIStepper(计数器)
- Arduino 控制超声波测距模块
- iOS开发UI -- UIAlertController(提示框)
- iOS开发UI -- 在storeBoard中通过标识符找到页面
- ctf很好的很详细的一篇guide
- UIPickerView隐藏黑线
- jboss无法自动创建Queue和Topic 发布时出现错误javax.naming.namenotfoundexception: myqueue not bound
- UIKit Dynamics 教程:抛掷 Views
- [LintCode]Segment Tree Query 线段树的查询
- Arduino控制继电器模块
- iOS 动画Animation详解, UIView动画,CALayer动画