基于java的单链表,队列实现

不知道有多少问题…


/**
 * 基于链表实现一个队列
 * 
 * @Description
 * @qq 59663479
 * @E-mail 59663479@qq.com
 * @Date 2019年9月5日 下午9:31:19
 */
public class LinkedQueue<T> {
	/*-
	 * 链表 队列需要参数分析:
	 * Node node,记录最先取出的元素
	 * len,记录当前链表元素数量
	 */
	
	private Node node;// 对象直接持有的,最前面的节点
	private int len; // 链表长度,可以没有,不过查询队列长度就需要 循环查询了

	/*-
	 * 链表队列需要方法分析:
	 *  
	 * 1:isNull,是否空,是空则返回true;
	 * 2:add,队尾添加;
	 * 3:pull,队首取出,并移除,如果没有元素则抛出异常;
	 * 4:peek,查看队首的元素,但不移除;
	 * 5:size,获取queue当前长度
	 */
	public LinkedQueue() {
	}

	public boolean isNull() {
		return len == 0;
	}

	public int size() {
		return len;
	}

	public T peek() {
		return element(node.obj);
	}

	@SuppressWarnings("unchecked")
	private T element(Object obj) {
		return (T) obj;
	}

	public T pull() {
		if (isNull()) {
			throw new RuntimeException();
		}
		Node n = node;
		node = node.next;
		len--;
		return element(n.obj);
	}

	public void add(T obj) {
		if (node == null) {
			node = new Node(obj);
			len++;
			return;
		}
		// 弄个tem变量记录节点头,nextNext记录tem的下一个
		// 如果nextNext为空,则tem 就是最后一个节点,把o加入到tem的 下一个即可
		Node tem = new Node();
		Node next = new Node();
		tem = node;
		for (;;) {
			next = tem.next;
			if (next == null) {
				break;
			}
			tem = tem.next;
		}
		tem.next = new Node(obj);
		len++;
	}

}

class Node {
	Object obj; // 当前元素
	Node next; // 下一个Node

	public Node(Object obj) {
		this.obj = obj;
	}

	public Node() {
	}
}

希望有大佬能指出不足

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值