线性数据结构- 单链表

java 定义单链表
/**
* 定义链表节点,单链表
*/
public class Node {
//数据域,也可以是泛型 T
private Object data;
// 持有下一个对象
private Node next;
// 单链表中的头和尾
private Node header;
private Node tail;
public Node(Object data) {
this.data = data;
}
/**
* 初始化单链表,设置 头和 尾
* @param node
* @return
*/
public Node init(Node node) {
this.header = node;
this.tail = header;
return this;
}
/**
* 向链表中最加数据,返回当前对象
* @param node
* @return
*/
public Node addToTail(Node node) {
tail.next = node;//队尾指向新的节点
this.tail = node;// 新节点变成队尾
return this;
}
public static void main(String[] args) {
Node header = new Node(1);
header.init(header)
.addToTail(new Node(2))
.addToTail(new Node(3))
.addToTail(new Node(4))
.addToTail(new Node(5))
;
//遍历单向链表
Node currentNode = header.header;
for (;;) {
System.out.println(currentNode.data);
currentNode = currentNode.next;// 取下一个节点
if (currentNode == null) {
break;
}
}
}
}
添加到队尾(tail)
/**
* 向链表中最加数据,返回当前对象
* @param node
* @return
*/
public Node addToTail(Node node) {
tail.next = node;//队尾指向新的节点
this.tail = node;// 新节点变成队尾
return this;
}
向链表中添加数据,添加到队头
/**
* 向链表中添加数据,添加到队头
* @param node
* @return
*/
public Node addToHeader(Node node) {
node.next = this.header; //指向队头
this.header = node; // 该节点变成头节点
return this;
}
节点插入到指定得位置
/**
* 将 节点 插入目标节点后面
* @param target
* @param node
* @return
*/
public Node after(Node target, Node node) {
node.next = target.next; // 将目标节点 得下一个节点 付给新节点得下一个。
target.next = node;// 设置目标节点得下一个节点指向 新节点
return this;
}
网友评论