循环链表实现队列
来源:互联网 发布:唱歌下载什么软件 编辑:程序博客网 时间:2024/05/18 00:09
public class Link { public long lData; public Link next; public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.print(lData+" "); }}
public class CircleList { private Link current; private int nItems; public CircleList(){ current=null; } public void insert(long value){ Link newLink = new Link(value); if(current==null){ current=newLink; newLink.next=newLink; }else{ newLink.next=current.next; current.next=newLink; current=newLink;//插入元素,current要移动要新元素 } nItems++; } public long remove(){ long temp = current.next.lData; if(current.next==current){ current=null; }else{ current.next=current.next.next; } nItems--; return temp; } public long peek(){ return current.next.lData; } public Link find(long value){ Link temp =current; Link result=null; if(current==null){ return result; } do{ step();//从current的下一个元素开始 if(current.lData==value){ result=current; current=temp;//还原current到原来的位置,这样就不会打乱插入的顺序,current指向最后插入的元素 } }while(current!=temp);//current到原来的位置,一周循环结束 return result; } public void step(){ if(current!=null){ current=current.next;// 调用step()方法后,顺序会被打乱 } } public void display(){ if(current!=null){ Link temp =current; do{ step();// 从current的一下个开始显示 System.out.print(current.lData + " "); }while(current!=temp); } System.out.println(); } public boolean isEmpty(){ return (current==null); } public int size(){ return nItems; }}
public class Queue { private CircleList theCircleList; private int nItems; public Queue(){ theCircleList = new CircleList(); nItems=0; } public void insert(long value){ theCircleList.insert(value); } public long remove(){ return theCircleList.remove(); } public long peek(){ return theCircleList.peek(); } public boolean isEmpty(){ return (theCircleList.size()==0); } public int size(){ return theCircleList.size(); } public void display(){ theCircleList.display(); }}
public class QueueApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Queue newQueue = new Queue(); newQueue.insert(10); newQueue.insert(20); newQueue.insert(30); newQueue.insert(40); newQueue.display(); newQueue.remove(); newQueue.remove(); newQueue.display(); newQueue.insert(50); newQueue.insert(60); newQueue.insert(70); newQueue.display(); long n = newQueue.remove(); System.out.println("删掉:"+n); System.out.println("队头元素是"+newQueue.peek()); newQueue.display(); }}
0 0
- 循环链表实现循环队列
- 链表实现循环队列
- 循环队列-链表实现
- 循环链表实现队列
- 循环链表实现队列
- 循环链表实现队列
- Java数组实现循环队列、Java链表实现队列
- 循环队列模版(链表实现)
- 循环队列的链表实现
- 用循环链表实现队列
- ArrayList链表实现循环队列
- 基于链表、数组实现队列、循环队列
- 循环链表队列
- 数据结构:双向链表实现队列与循环链表
- 数据结构---双向链表实现队列与循环链表
- 循环链表,栈,队列,链表实现
- 队列实现 (双向循环链表 C++)
- 队列—链表与循环数组实现
- 【图的最短路径】迪杰斯特拉算法求图的最短路径
- Segmentation Fault in Linux 原因与避免
- socket程序listen之后,不写accept函数,会是怎样一种情况?
- springMVC No mapping found for HTTP request with URI
- TCP连接问题复习
- 循环链表实现队列
- Volley报NullPointerException
- 近5年133个Java面试问题列表
- base64 编码原理
- ios NSTimer与保留环
- 再次学习AsyncTask的异步加载
- 2016年第2次吐槽小米,系统升级连不上wifi
- android studio导入Eclipse遇到的问题一
- 十大 HTML 5 前端框架