链表分为单向链表和双向链表。
创建链表
class Node {
Node next = null;
int data;
public Node(int d) {
data = d;
}
void appendToTail(int d) {
Node end = new Node(d);
Node n = this;
while (n.next != null) {
n = n.next;
} /*将n指向当前最后一位数据*/
n.next = end; /*存入新加入数据*/
}
}
删除单向链表中的节点
Note:
1. 检查空指针
2. 必要时更新表头(head)或表尾(tail)指针
Node deleteNode (Node head, int d) {
Node n = head;
if (n.data == d) {
return head.next; /*表头指向下一节点*/
} /* d为表头*/
while (n.next != null) {
if (n.next.data == d) {
n.next = n.next.next;
return head; /*表头不变*/
}
n = n.next;
} /*d为表内数据*/
return head; /*d不存在*/
}
备注:
单向链表
`prev.next = n.next;`
双向链表
`prev.next = n.next;
n.next.prev = n.prev;`