数据结构与算法Java描述 队列

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);
	}
}

  结果如下:

猜你喜欢

转载自www.cnblogs.com/SAM-CJM/p/9316809.html