如何实现队列

数组实现方法: 

package java程序员面试笔试宝典;

import java.util.LinkedList;

public class Queue<E>{
	LinkedList<E> list=new LinkedList<E>();
	public boolean isEmpty(){
		return list.size()==0;
	}
	public int size(){
		return list.size();
	}
	public void put(E data){
		list.add(data);
	}
	public E pop(){
		E data=list.remove(0);
		return data;
	}
	
	public static void main(String[] args) {
		Queue<Integer> q=new Queue<Integer>();
		q.put(1);
		q.put(2);
		q.put(3);
		System.out.println(q.pop());
		System.out.println(q.pop());
		//System.out.println(q.pop());
		System.out.println(q.isEmpty());
		System.out.println(q.size());
	}
}

链表实现方法:

package java程序员面试笔试宝典;
class Node2<E>{
	Node2<E> next=null;
	E data;
	public Node2(E data){
		this.data=data;
	}
}
public class MyQueue<E> {
	//链表实现方式
	Node2<E> head=null;
	Node2<E> tail=null;
	int size=0;
	public boolean isEmpty(){
		return head==tail&&head==null;
	}
	public int size(){
		return size;
	}
	public void put(E data){
		Node2<E> newNode=new Node2<E>(data);
		if(isEmpty()){
			head=tail=newNode;
		}else{
			tail.next=newNode;
			tail=newNode;
		}
		size++;
	}
	public E pop(){
		E data=head.data;
		if(isEmpty()){
			return null;
		}else{
			head=head.next;
			size--;
		}
		return data;
	}
	public static void main(String[] args) {
		MyQueue<Integer> myQueue=new MyQueue<Integer>();
		System.out.println(myQueue.isEmpty());
		System.out.println(myQueue.size());
		myQueue.put(1);
		myQueue.put(2);
		myQueue.put(3);
		System.out.println(myQueue.size());
		System.out.println(myQueue.pop());
		System.out.println(myQueue.size());

	}
}

猜你喜欢

转载自blog.csdn.net/m0_38068868/article/details/81208736