1.单向链表
public class Node {
public int value;
public Node next;
public Node(int data) {
value = data;
}
}
2.双向链表
public class DoubleNode {
public int value;
public DoubleNode pre;
public DoubleNode next;
public DoubleNode(int data) {
value = data;
}
}
3.链表反转
3.1 单链表反转
public static Node reverse(Node node) {
Node temp = null;
Node pre = null;
while (node != null) {
temp = node.next;
node.next = pre;
pre = node;
node = temp;
}
return node;
}
3.2 双链表反转
public static DoubleNode reverse(DoubleNode node) {
DoubleNode temp = null;
DoubleNode pre = null;
while (node != null) {
temp = node.next;
node.next = pre;
node.pre = temp;
pre = node;
node = temp;
}
return node;
}
4.删除节点
public static Node removeNode(Node node, Integer val) {
Node head = node;
while (head != null) {
if (head.value != val) {
break;
}
head = head.next;
}
Node pre = head;
Node cur = head;
while (cur != null) {
if (cur.value == val) {
pre.next = cur.next;
} else {
pre = cur;
}
cur = cur.next;
}
return head;
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于