203.移除链表元素
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode protect = new ListNode(0, head);
ListNode p = protect.next;
ListNode last = protect;
while (p != null) {
if (p.val == val) {
last.next = p.next;
} else {
last = p;
}
p = p.next;
}
return protect.next;
}
}
707.设计链表
不要分神。
class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
class MyLinkedList {
ListNode head;
public MyLinkedList() {
head = new ListNode(0, null);
}
public int get(int index) {
if (index < 0 || index >= head.val) return -1;
ListNode p = head;
while (p != null && index >= 0) {
p = p.next;
index--;
}
if (p == null) return -1;
return p.val;
}
public void addAtHead(int val) {
head.val++;
ListNode node = new ListNode(val, head.next);
head.next = node;
}
public void addAtTail(int val) {
head.val++;
ListNode p = head;
while (p.next != null) {
p = p.next;
}
ListNode node = new ListNode(val, null);
p.next = node;
}
public void addAtIndex(int index, int val) {
if (index <= 0) addAtHead(val);
else if (index > head.val) ;
else if (index == head.val) addAtTail(val);
else {
head.val++;
ListNode p = head;
while (p != null && index > 0) {
index--;
p = p.next;
}
ListNode node = new ListNode(val, p.next);
p.next = node;
}
}
public void deleteAtIndex(int index) {
if (index < 0 || index >= head.val) {
;
} else {
head.val--;
ListNode p = head;
while (p != null && index > 0) {
index--;
p = p.next;
}
p.next = p.next.next;
}
}
}
206.反转链表
class Solution {
public ListNode reverseList(ListNode p) {
ListNode last = null;
while (p != null) {
ListNode next = p.next;
p.next = last;
last = p;
p = next;
}
return last;
}
}