利用链表简单实现队列(Queue)

package com.briup.day13.que5;

public class Node {
	Node prev;
	int data;
	Node next;
	public Node(Node prev,int data,Node next) {
		this.prev = prev;
		this.data = data;
		this.next = next;
	}
}

package com.briup.day13.que5;

public class Queue {
	private Node first;//头节点
	private Node last;//尾节点
	private int size = 0;//有效元素的个数
	//将指定元素插入到此队列中
	public void add(int element) {
		//获取尾节点对象,保存原来的尾节点到一个变量中,待会得用
		Node lNode = last;
		//把当前数据包装成一个新的node对象
		Node newNode = new Node(lNode, element, null);
		//将新节点设置为尾节点
		last = newNode;
		//如果原来的尾节点为null,证明这个栈,从来没有使用过
		if(lNode==null) {
			//那么当前节点就是头节点
			first = newNode;
		}else {
			//原来的尾节点得下一个指向新节点
			lNode.next = newNode;
		}
		//有效元素个数加一
		size++;
	}
	//删除队列的头
	public int remove() {
		//获取头节点
		Node fNode = first;
		if(fNode==null) {
			throw new RuntimeException("该队列为空");
		}
		//把头节点的值保存起来
		int oldValue = fNode.data;
		//把头节点的下一个节点设置为头节点
		first = fNode.next;
		fNode = null;
		size--;
		return oldValue;
	}
	public int size() {
		return size;
	}
	public void show() {
		Node currentNode = first;
		StringBuilder sb = new StringBuilder("[");
		for(int i = 0;i<size;i++) {
			sb.append(currentNode.data);
			if(i!=size-1) {
				sb.append(",");
			}
			currentNode = currentNode.next;
		}
		sb.append("]");
		System.out.print(sb.toString());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值