(学习java)链队列的实现

//定义链队列
public class MyQueue {
	public static void main(String[] args) {
		QueueNode q = new QueueNode();
		q.pushQueue(true);
		q.pushQueue(1);
		q.pushQueue("你好");

		//q.clearQueue();
		q.listQueue();
	}
	
	//定义结点类
	public static class Node{
		private Object data;
		private Node next;
		public Node(){}
		public Node(Object data){
			this.data = data;
		}		
	}
	
	//定义链队列
	public static class QueueNode{
		//定义头指针
		private Node front;
		//定义尾指针
		private Node rear;
		//队列长度
		private int size;
		//构造方法
		public QueueNode() {
			//定义一个头结点
			this.front = new Node();
			rear = front;
		}
		
		//判断当前队列是否为空
		public boolean isEmpty(){
			return rear == front;
		}
		
		//入队   元素从队尾进入
		public void pushQueue(Object data){
			if(isEmpty()){
				Node node = new Node(data);
				front.next = node;
				rear = node;
				size++;
			}else{
				Node node = new Node(data);
				rear.next = node;
				rear = node;
				size++;
			}
		}
		
		//出队  元素从队头出来
		public Object popQueue(){
			if(isEmpty()){
				System.out.println("队列为空,不能出队!");
				
				return null;
			}else if(size == 1){
				Object data = rear.data;
				front.next = null;
				rear = front;
				size--;	
				return data;
			}else{
				Object data = front.next.data;
				front.next = front.next.next;
				size--;
				return data;				
			}
		}
		
		//遍历队列
		public void listQueue(){
			if(size==0){
				System.out.println("空队列");
				System.out.println("队列的长度" + size);
			}else{
				Node temp = front;
				while(temp.next!=rear){
					temp = temp.next;
					System.out.print(temp.data + "<-");
				}
				temp = temp.next;
				System.out.println(temp.data);
				System.out.println("队列的长度" + size);
			}
		}
		
		//清空队列
		public void clearQueue(){
			while(!isEmpty()){
				popQueue();
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值