package com.cjm.queue; /** * 数据结构与算法Java实现 队列 * * @author 小明 * */ public class Myqueue { private Node head;// 队列的队头 private Node rear;// 对列的尾 private int size;//队列长度 public Myqueue() {//初始化 head=rear=null; size=0; } /* * 插入函数 */ public void add(Node node) { if(size==0) {//当队列为空时 head=rear=node;//队头和队尾均为插入元素 size++;//长度加一 }else {//当长度不为0时 rear.setNext(node);//改变队尾的后继 rear=node;//改变队尾 size++;//长度加一 } } public void out() throws IndexException { if(size==0) {//对列为空时 throw new IndexException("队列中为空,无法出队列"); }else {//队列不为空 head=head.getNext();//修改队头 size--;//长度减一 } } @Override public String toString() { String str=" "; Node temp=head; while(temp!=null) { str+=temp.getElement()+" ";//拼接 temp=temp.getNext();//后移 } str="["+str+" ]"; return str; } public static void main(String[] args) throws IndexException { Myqueue myqueue=new Myqueue(); myqueue.add(new Node(1)); myqueue.add(new Node(2)); myqueue.add(new Node(3)); myqueue.add(new Node(4)); myqueue.add(new Node(5)); myqueue.add(new Node(6)); myqueue.add(new Node(7)); myqueue.add(new Node(8)); myqueue.add(new Node(9)); myqueue.add(new Node(10)); myqueue.out(); myqueue.out(); System.out.println(myqueue); } } class Node<T> { private T element;// 数据域 private Node next;// 后继 public Node(T t) { element = t; next = null; } public Node getNext() { return next; } public T getElement() { return element; } public void setNext(Node next) { this.next = next; } } /* * 索引异常类 */ class IndexException extends Exception { public IndexException() { } public IndexException(String s) { super(s); } }
结果如下: