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);
}
}
结果如下: