和棧類似,用數組和鏈表來實現了了隊列
首先是數組實現的;
/*
* 用數組實現一個隊列
* 未處理邊界情況
*/
public class MyQueue<E> {
int size;
int i=0;//隊列頭
private Object[] queue;
public MyQueue(){
queue=new Object[10];
}
public boolean isEmpty(){
return size==0;
}
public E put(E data){
queue[size++]=data;
return data;
}
public E pop(){
@SuppressWarnings("unchecked")
E tmp=(E) queue[i++];
size--;
return tmp;
}
public E peek(){
return (E) queue[i];
}
public static void main(String[] args){
MyQueue<Integer> s=new MyQueue<>();
s.put(2);
s.put(3);
s.put(4);
s.put(5);
s.put(7);
System.out.println(s.size);
System.out.println("元素爲"+s.pop());// 打印 2
System.out.println("元素爲"+s.pop());//3
System.out.println("元素爲"+s.pop());//4
System.out.println("元素爲"+s.peek());//5
}
}
接着是用鏈表實現的隊列:
/*
* 用鏈表實現一個隊列
*/
class Node_1<E>{
Node_1<E>next=null;
E data;
public Node_1(E data){this.data=data;}
}
public class LinkedQueue<E> {
private Node_1<E>head=null;
private Node_1<E>tail=null;
public boolean isEmpty(){
return tail==head;
}
public void push(E data){
Node_1<E>newNode=new Node_1<>(data);
if(head==null&&tail==null)//判斷隊列是否爲空 若不判斷 則編譯不過 空指針異常
head=tail=newNode;
else{
tail.next=newNode;
tail=newNode;}}
public E pop(){
if(this.isEmpty())
return null;
E data=head.data;
head=head.next;
return data;
}
public E peek(){
return head.data;
}
public static void main(String[] args){
LinkedQueue<Integer>myqueue=new LinkedQueue<>();
myqueue.push(122);
myqueue.push(144);
myqueue.push(155);
//myqueue.pop();
System.out.print(myqueue.peek());//122
}
}