基于数组和节点方式的队列的实现

来源:互联网 发布:电子书资源知乎 编辑:程序博客网 时间:2024/05/21 18:38

基于数组方式的队列的实现

package com.study.link;/** * 基于数组的队列 * @author Administrator * */public class ArrayQueue {private Node[] nodeArray;private int last;public ArrayQueue(int length){nodeArray = new Node[length];}/** * 入队 * @param n */public void enqueue(Node node){nodeArray[last] = node;last++;}/** * 出队 * @return */public Node denqueue(){if(last>0){last--;Node node = nodeArray[last];return node;}return null;}public static void main(String[] args) {ArrayQueue queue = new ArrayQueue(10);queue.enqueue(new Node(1));queue.enqueue(new Node(2));queue.enqueue(new Node(3));queue.enqueue(new Node(4));queue.enqueue(new Node(5));while(queue.last>0){System.out.println(queue.denqueue().getValue());}}}

基于节点

package com.study.link;/** * 基于节点的方式实现队列 * 先进先出 * @author Administrator * */public class NodeQueue {private Node first;private Node last;/** * 入队 * @param n */public void enqueue(Node node){if(first==null){first = node;last = node;}else{last.setNext(node);last = node;}}/** * 出队 * @return */public Node denqueue(){if(first == null){            return null;        }else{            Node temp = new Node(first.getValue());            first = first.getNext();            if(last == temp){            last = first;            }            return temp;        }   }public static void main(String[] args) {NodeQueue queue = new NodeQueue();queue.enqueue(new Node(1));queue.enqueue(new Node(2));queue.enqueue(new Node(3));queue.enqueue(new Node(4));queue.enqueue(new Node(5));queue.enqueue(new Node(6));queue.enqueue(new Node(7));queue.enqueue(new Node(8));queue.enqueue(new Node(9));while(queue.first!=null){              System.out.println(queue.denqueue().getValue());          }  }}


package com.study.link;/** * 链表节点 * 每个链表都有本身值和指向下一个节点的链接 * @author Administrator * */public class Node {private Object value;private Node next;public Node(Object value){this.value = value;next = null;}public Object getValue() {return value;}public void setValue(Object value) {this.value = value;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}}



原创粉丝点击