复习----使用链表实现队列(先进先出)及迭代
生活随笔
收集整理的這篇文章主要介紹了
复习----使用链表实现队列(先进先出)及迭代
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現隊列比實現棧的會多一點復雜,需要兩個標記,first表示隊頭,last表示隊尾。
鏈表結構
private class Node{Item item;Node next;}迭代器
與實現棧的迭代器一模一樣
private class Iterator implements java.util.Iterator<Item>{private Node p=first;@Overridepublic boolean hasNext() {return p!=null;}@Overridepublic Item next() {Item item=p.item;p=p.next;return item;}@Overridepublic void remove() {}}源代碼
static class queue<Item>{private Node first;//隊頭private Node last;//隊尾private int N;private class Node{Item item;Node next;}private boolean isEmpty(){return first==null;}private int size(){return N;}private void enqueue(Item item){//入隊Node oldlast=last;last=new Node();last.item=item;last.next=null;if(isEmpty()){//如果隊列為空,則first需要和last指向相同first=last;}else {//隊列不為空的話,就是正常情況直接last指向隊尾的下一個位置(nulloldlast.next=last;}N++;}private Item dequeue(){//出隊Item item=first.item;first=first.next;if(isEmpty()){//如果隊里沒有元素的話,last得為空last=null;}N--;return item;}private Iterator iterator(){return new Iterator();}private class Iterator implements java.util.Iterator<Item>{private Node p=first;@Overridepublic boolean hasNext() {return p!=null;}@Overridepublic Item next() {Item item=p.item;p=p.next;return item;}@Overridepublic void remove() {}}}簡單實例
public static void main(String[] args) {queue<Integer> stringqueue = new queue<Integer>();System.out.println("入隊中... ...");for(int i=1;i<=9;i++){stringqueue.enqueue(i);}queue<Integer>.Iterator iterator = stringqueue.iterator();System.out.println("迭代中... ...");while(iterator.hasNext()){System.out.print(iterator.next()+" ");}System.out.println();System.out.println("---我是分割線---"+"\n"+"出隊中... ...");while (!stringqueue.isEmpty()){System.out.print(stringqueue.dequeue()+" ");}if(stringqueue.size()==0){System.out.println("出隊完畢!");}}總結
以上是生活随笔為你收集整理的复习----使用链表实现队列(先进先出)及迭代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yolov5的flask部署python
- 下一篇: 源码包安装mysql5.6_源码包安装m