先进先出队列(链表实现)

import java.util.Scanner;
import java.util.Iterator;

// 先进先出队列
public class MyQueue<Item> implements Iterable<Item> {
	private Node first;
	private Node last;
	private int N;
	
	private class Node{
		Item item;
		Node next;
	}
	
	public boolean isEmpty(){
		return first==null;
	}
	public int size(){
		return N;
	}
	
	// 向表尾添加元素
	public void enqueue(Item item){
		Node oldlast=last;
		last=new Node();
		last.item=item;
		last.next=null;
		if(isEmpty()) first=last;
		else oldlast.next=last;
		N++;
	}
	
	// 从表头删除元素
	public Item dequeue(){
		Item item=first.item;
		first=first.next;
		if(isEmpty()) last=null;
		N--;
		return item;
	}
	
	public Iterator<Item> iterator(){
		return new ListIterator();
	}
	private class ListIterator implements Iterator<Item>{
		Node current=first;
		@Override
		public boolean hasNext() {
			return current!=null;
		}

		@Override
		public Item next() {
			Item item=current.item;
			current=current.next;
			return item;
		}

		@Override
		public void remove() {}
		
	}
	public static void main(String[] args) {
		MyQueue<String> q=new MyQueue<String>();
		Scanner cin=new Scanner(System.in);
		while(cin.hasNext()){
			String item=cin.next();
			if(item.equals("$")) break;
			if(!item.equals("-")){
				q.enqueue(item);
				System.out.print("enqueue "+item);
			}
			else if(!q.isEmpty()){
				System.out.print("dequeue "+q.dequeue());
			}
			System.out.println(" | "+q.size()+" left in queue");
		}
		// Test iterator
		for(String s : q){
			System.out.print(s+" ");
		}
		System.out.println();
		
		Iterator<String> it=q.iterator();
		while(it.hasNext()){
			System.out.print(it.next()+" ");
		}
	}
}
// Test example
to be or not to - be - - that - - - is $
enqueue to | 1 left in queue
enqueue be | 2 left in queue
enqueue or | 3 left in queue
enqueue not | 4 left in queue
enqueue to | 5 left in queue
dequeue to | 4 left in queue
enqueue be | 5 left in queue
dequeue be | 4 left in queue
dequeue or | 3 left in queue
enqueue that | 4 left in queue
dequeue not | 3 left in queue
dequeue to | 2 left in queue
dequeue be | 1 left in queue
enqueue is | 2 left in queue
that is 
that is 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值