首页 > 代码库 > Java实现双链表

Java实现双链表

public class DoubleLink<T> {
	//存放第一个指针
	private Node<T> firstNode;
	//存放最后一个指针
	private Node<T> lastNode;
	//存放链大小
	private int size;

	//构造函数
	public DoubleLink() {}

	// --------------------------------add()系列----------------------------------
	public void addFirst(T data) {
		linkFirst(data);

	}

	public void addLast(T data) {
		linkLast(data);
	}

	public void add(T data) {
		linkLast(data);
	}

	public void linkFirst(T data) {
		Node f = this.firstNode;
		Node newNode = new Node<T>(data, f, null);
		this.firstNode = newNode;
		if (f == null) {
			// 1 如果等于空,说明他没有前一个Node
			// 2 如果等于空,说明这是一张空链表,所以此时,this.lastNode=newNode,即:链的最后一个和第一个重合
			this.lastNode = this.firstNode;
		} else {
			// 1 如果不等于空,说明存在firsrNode链表
			f.prev = this.firstNode;
		}
		this.size++;
	}

	public void linkLast(T data) {
		if (this.firstNode == null) {
			linkFirst(data);
			return;
		}
		// 如果链中不是为空,那么就有firstNode,lastNode
		Node newNode = new Node<T>(data, this.lastNode, null);
		this.lastNode.next = newNode;
		this.lastNode = newNode;
		this.size++;
	}

	// --------------------------------remove()系列--------------------------------
	public T removeFirst() {
		if (this.firstNode == null) {
			return null;
		}
		//记录返回数据
		T data = http://www.mamicode.com/this.firstNode.data;>