Problem: 707. 设计链表
文章目录
自定义链表的增删查
Code
class MyLinkedList {
int size;
ListNode head;
public MyLinkedList() {
size = 0;
head = new ListNode(0);
}
public int get(int index) {
// 如果下标无效,则返回 -1 。
if (index < 0 || index >= size) {
return -1;
}
// 下标有效 遍历 查找
ListNode prev = head;
for (int i = 0; i <= index; i++) {
prev = prev.next;
}
return prev.val;
}
public void addAtHead(int val) {
ListNode t = new ListNode(val);
if (head.next == null) {
head.next = t;
}
ListNode prev = head;
t.next = prev.next;
prev.next = t;
prev = t.next;
size++;
}
public void addAtTail(int val) {
ListNode t = new ListNode(val);
if (head == null) {
head = t;
} else {
ListNode prev = head;
for (int i = 0; i < size; i++) {
prev = prev.next;
}
prev.next = t;
}
size++;
}
public void addAtIndex(int index, int val) {
if (index > size) {
return;
}
ListNode t = new ListNode(val);
ListNode prev = head;
for (int i = 0; i < index; i++) {
prev = prev.next;
}
t.next = prev.next;
prev.next = t;
size++;
}
public void deleteAtIndex(int index) {
if (index >= size) {
return;
}
ListNode prev = head;
for (int i = 0; i < index; i++) {
prev = prev.next;
}
prev.next = prev.next.next;
size--;
}
}