队列的链式存储方式的实现(Java语言描述)

来源:互联网 发布:java经典编程300例 编辑:程序博客网 时间:2024/06/08 16:47

链队列的结构示意图:

Java实现队列 - 队列内部使用链式存储结构

先进先出。

QueueInterface.java//操作方法接口

 

package 队列的实现;public interface QueueInterface {public void enQueue(Object t);public Object delQueue();public int size();public boolean isEmpty();public Object head();public void clear();}


 

Node.java//节点类

package 队列的实现;public class Node<T> {T data;Node next;}

Queue.java//队列的定义和接口实现

package 队列的实现;public class Queue<T> implements QueueInterface{    Node<T> front,rear;//对头指针,队尾指针    //构造一个空的链队列    public Queue(){    front = new Node<T>();    rear = new Node<T>();    rear = front;    }//实现接口里的操作    public boolean isEmpty(){if(front == rear)return true;elsereturn false;}    public int size(){    int i = 0;    Node<T> p = front.next;    while(p != null){    p = p.next;    i++;    }    return i;    }    public Object head(){    if(this.isEmpty() == false)    return front.next.data;    System.out.println("队列为空,不存在队头元素!");    return 0;    }public void enQueue(Object obj){Node<T> p = new Node<T>();p.data = (T)obj;rear.next = p;p.next = null;rear = p;}public Object delQueue(){T t;Node<T> p = new Node<T>();if(this.isEmpty() == true){System.out.println("队列为空,不能进行删除操作!");return 0;}else{p = front.next;front.next = p.next;if(p.next == null)//出队后队列为空rear = front;t = p.data;p = null;return t;}}public void clear(){front = rear;}}

TestQueue.java//测试类

package 队列的实现;public class TestQueue {public static void main(String[] args) {Queue<Integer> queue = new Queue<Integer>();for(int i=1; i<=10; i++){queue.enQueue(i);}System.out.println(queue.size());System.out.println(queue.isEmpty());for(int i=1; i<=10; i++){System.out.print(queue.delQueue() + " ");}System.out.println();System.out.println(queue.isEmpty());for(int i=1; i<=10; i++){queue.enQueue(i);}System.out.println(queue.isEmpty());queue.clear();System.out.println(queue.isEmpty());}}


实现结果:

10
false
1 2 3 4 5 6 7 8 9 10
true
false
true


 

0 0
原创粉丝点击