第十五章 泛型

仿造《Java编程思想》中链式堆栈类,实现一个链式队列

1. 首先需要一个通用的结点类

public class Node<T> {

	private T item;// 存储的数据
	private Node<T> next;// 下一个节点的引用

	public Node(T item) {
		super();
		this.item = item;
	}

	public T getItem() {
		return item;
	}

	public void setItem(T item) {
		this.item = item;
	}

	public Node<T> getNext() {
		return next;
	}

	public void setNext(Node<T> next) {
		this.next = next;
	}

}

2. 实现链式队列

/**
 * 链式队列
 * <p>
 * 入队列->tail......head->出队列
 * 
 * @author fengbin
 *
 * @param <T>
 */
public class LinkedQueue<T> {

	private Node<T> head;// 头结点
	private Node<T> tail;// 尾结点
	private int size = 0;// 队列大小

	/**
	 * <ul>
	 * <li>入队列,如果size=0,头尾相同;
	 * <li>如果size>1,则头不变,尾变;
	 * <li>如果size=1,因为头尾指向同一对象,只需要将尾的next改变,同时尾变
	 * </ul>
	 * 
	 * @param item
	 */
	public void push(T item) {
		Node<T> node = new Node<>(item);
		if (size == 0) {
			head = tail = node;
		} else {
			tail.setNext(node);
			tail = node;
		}
		size++;
	}

	/**
	 * <ul>
	 * <li>出队列,如果size=0,则返回null;
	 * <li>否则,返回head的item信息,同时将head指向next
	 * <ul>
	 * 
	 * @return
	 */
	public T pop() {
		if (size == 0)
			return null;
		T data = head.getItem();
		head = head.getNext();
		size--;
		return data;
	}

	public static void main(String[] args) {
		LinkedQueue<String> queue = new LinkedQueue<>();
		for (String s : "Hello world !!!".split(" "))
			queue.push(s);
		String s;
		while ((s = queue.pop()) != null)
			System.out.println(s);
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值