/**
 * 
 */
package com.wan.xiang.LinkList;

/**
 * @author Sakura
 * @Desc //TODO 链表类
 * @Date 2019年7月21日下午3:59:00
 */
public class LinkList {
	
	Node first;//头结点
	Node last;//尾结点
	public LinkList() {
		//构造带头结点的链表
		first = new Node();
		last = first;
	}
	public void addNode(Object data) {
		Node temp = new Node(data);
		if(last == first) {
			//如果链表中只有一个头结点
			first.next = temp;
			last = temp;
		}else {
			//头插法
			temp.next = first.next;
			first.next = temp;
		}
		
	}
	@Override
	//重写toString 输出链表
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("{");
		Node temp;
		temp = first.next;//头结点没有数据,从首元结点开始遍历
		if (temp == null) {
			return "{null}";//链表为空返回空链表
		} else {
			while (temp != null) {
				sb.append(temp.data + ",");
				temp = temp.next;
			}
			sb.setCharAt(sb.length() - 1, '}');//将最后一个逗号替换为“}”
			return sb.toString();
		}
		
	}
	public static void main(String[] args) {
		LinkList list = new LinkList();
		list.addNode("a");
		list.addNode("b");
		System.out.println(list);
	}

}
/**
 * 
 */
package com.wan.xiang.LinkList;

/**
 * @author Sakura
 * @Desc //TODO Node class
 * @Date 2019年7月21日下午3:57:39
 */
public class Node {
	Object data;//data filed
	Node next;//指针 filed
	public Node() {
		next = null;
	}
	public Node(Object data) {
		this.data = data;
		next = null;
	}
}