算法(第四版)课后练习 1.3.29
2016-04-25 00:00
323 查看
摘要: 用环形链表实现Queue
package com.zt.data; import java.util.Iterator; import javax.swing.plaf.basic.BasicScrollPaneUI.HSBChangeListener; import edu.princeton.cs.algs4.In; public class Queue<Item> implements Iterable<Item>{ private Node first; private Node last; private int N; private class Node<Item>{ Item item; Node next; }; public Queue(){ first = null; last =null; } public boolean isEmpty(){ return first==null; } public int size(){ return N; } public void enqueue(Item item){ Node node = new Node(); node.item = item; if(isEmpty()){ first = node; last = node; }else{ last.next = node; last = node; } N++; } public Item dequeue(){ if(isEmpty()) throw new RuntimeException("Queue is null!!!"); Item item = (Item) first.item; first = first.next; N--; return item; } public String toString(){ StringBuilder s = new StringBuilder(); for(Item item:this){ s.append(item+" "); } return s.toString(); } public static void main(String[] args) { Queue<Integer> queue = new Queue<Integer>(); for(int i=0;i<10;i++){ queue.enqueue(i); } System.out.println(queue.toString()+ "Size:" + queue.size()); System.out.println(queue.dequeue()); System.out.println(queue.dequeue()); System.out.println(queue.toString()+ "Size:" + queue.size()); } @Override public Iterator<Item> iterator() { return new ListIterator(); } private class ListIterator implements Iterator<Item>{ private Node current = first; @Override public boolean hasNext() { return current!=null; } @Override public Item next() { if(!hasNext()){ throw new RuntimeException("has not Next"); } Item item = (Item) current.item; current = current.next; return item; } } }
相关文章推荐
- CAS学习教程
- 干货!优秀程序员必备软件
- 一夜爆红的程序员神助,竟然是它!
- 隐形人的现身衣
- ZIP文件解压
- App收集用户信息 你的个人信息安全么?
- redis 集群
- 获取一个实体的参数属性的值。比如A实体 有a ,b,c属性,根据参数(属性),获取该实体对应的属性
- 深圳Android培训拿高薪 开始我的高薪之旅
- Android开发中libs目录下so文件的正确放置“姿势”
- PHP7快速入门教程
- tomcat的rmi触发的full gc的时间过长的优化
- 从零开始学_JavaScript_系列(12)——jquery<2>(高度自适应,哈希地址及检测,单页面技术)
- 快速计算素数程序
- 重学数据结构系列之——总结
- 段错误信息的获取
- Linux查看物理CPU个数、核数、逻辑CPU个数
- 常使用的10个jQuery代码片段
- 抽象类
- union和union all的区别