LeetCode 707. 设计链表 C#
原题链接
中等
作者:
hpstory
,
2022-09-23 14:40:20
,
所有人可见
,
阅读 118
C# 代码
public class MyLinkedList {
private ListNode dummy;
private int count;
public MyLinkedList() {
this.dummy = new ListNode();
this.count = 0;
}
public int Get(int index) {
if (index < 0 || index >= count) return -1;
ListNode current = dummy.next;
while (index-- > 0){
current = current.next;
}
return current.val;
}
public void AddAtHead(int val) {
ListNode next = dummy.next;
dummy.next = new ListNode(val, next);
count++;
}
public void AddAtTail(int val) {
ListNode newNode = new ListNode(val);
ListNode current = dummy;
while (current.next != null){
current = current.next;
}
current.next = newNode;
count++;
}
public void AddAtIndex(int index, int val) {
if (index > count) return;
if (index < 0) AddAtHead(val);
ListNode current = dummy;
while (index-- > 0){
current = current.next;
}
ListNode newNode = new ListNode(val, current.next);
current.next = newNode;
count++;
}
public void DeleteAtIndex(int index) {
if (index < 0 || index >= count) return;
ListNode current = dummy;
while (index-- > 0){
current = current.next;
}
current.next = current.next.next;
count--;
}
}
public class ListNode{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null){
this.val = val;
this.next = next;
}
}