package DataDtructure;
/**
* ClassName: Queue
* Company:华中科技大学电气学院
* date: 2019/8/23 15:46
* author: YEXIN
* version: 1.0
* since: JDK 1.8
* Description:
*/
public interface Queue<E> {
int getSize();
boolean isEmpty();
void enqueue(E e);
E getFront();
E dequeue();
}
================================================================
package DataDtructure;
/**
* ClassName: LinkedListQueue
* Company:华中科技大学电气学院
* date: 2019/8/25 15:03
* author: YEXIN
* version: 1.0
* since: JDK 1.8
* Description:
*/
public class LinkedListQueue<E> implements Queue<E> {
private class Node{//节点类,一个Node表示一个数据的存储和指向下一个节点
public E e;
public Node next;//下一个节点
public Node(E e,Node next){
this.e = e;
this.next=next;
}
public Node(){
this(null,null);
}
public Node(E e){
this(e,null);
}
@Override
public String toString(){
return e.toString();
}
}
private Node head,tail;
private int size;
public LinkedListQueue(){
head = null;
tail = null;
size = 0;
}
@Override
public int getSize() {
return size;
}
@Override
public boolean isEmpty() {
return size==0;
}
@Override
public void enqueue(E e) {
if(tail==null){
tail = new Node(e);
head = tail;
}else {
tail.next = new Node(e);
tail = tail.next;
}
size++;
}
@Override
public E getFront() {
if(isEmpty()){
throw new IllegalArgumentException("Queue is empty");
}
return head.e;
}
@Override
public E dequeue() {
if(isEmpty()){
throw new IllegalArgumentException("Queue is empty");
}
Node retNode = head;
head = head.next;
retNode.next = null;
if(head == null)
tail = null;
size--;
return retNode.e;
}
@Override
public String toString(){
StringBuilder res = new StringBuilder();
res.append(String.format("Queue:size = %d\n",size));
res.append("front:");
Node cur = head;
while (cur != null){
res.append(cur+"<-");
cur = cur.next;
}
res.append(" Null :tail");
return res.toString();
}
}
==========================================
package DataDtructure;
/**
* ClassName: MainQueue
* Company:华中科技大学电气学院
* date: 2019/8/20 15:22
* author: YEXIN
* version: 1.0
* since: JDK 1.8
* Description:
*/
public class MainQueue {
public static void main(String[] args) {
LinkedListQueue<Integer> linkedListQueue = new LinkedListQueue<>();
for(int i=0;i<10;i++){
linkedListQueue.enqueue(i);
System.out.println(linkedListQueue);
}
linkedListQueue.dequeue();
System.out.println(linkedListQueue);
}
}
============================================
Queue:size = 1
front:0<- Null :tail
Queue:size = 2
front:0<-1<- Null :tail
Queue:size = 3
front:0<-1<-2<- Null :tail
Queue:size = 4
front:0<-1<-2<-3<- Null :tail
Queue:size = 5
front:0<-1<-2<-3<-4<- Null :tail
Queue:size = 6
front:0<-1<-2<-3<-4<-5<- Null :tail
Queue:size = 7
front:0<-1<-2<-3<-4<-5<-6<- Null :tail
Queue:size = 8
front:0<-1<-2<-3<-4<-5<-6<-7<- Null :tail
Queue:size = 9
front:0<-1<-2<-3<-4<-5<-6<-7<-8<- Null :tail
Queue:size = 10
front:0<-1<-2<-3<-4<-5<-6<-7<-8<-9<- Null :tail
Queue:size = 9
front:1<-2<-3<-4<-5<-6<-7<-8<-9<- Null :tail
Process finished with exit code 0
&spm=1001.2101.3001.5002&articleId=100063449&d=1&t=3&u=867f13f0a3054ed7a328255f51e90b8a)
212

被折叠的 条评论
为什么被折叠?



