设计链表的过程中我有两个错误
- 在尾端添加时我一开始选择的当前节点是头节点,但是如果这个链表为空只有虚拟头节点时就会发生错误
- 在指定位置添加节点时可以选择等于链表当前容量,即添加到尾端
class ListNode {
int val;
ListNode next;
ListNode(){}
ListNode(int val) {
this.val=val;
}
}
public class MyLinkedList {
int size=0;
ListNode dummyhead;
ListNode cur;
ListNode head;
// ListNode tail;
public MyLinkedList() {
size=0;
dummyhead=new ListNode(0);
}
public int get(int index) {
if(index>=size||index<0){
return -1;
}
cur=dummyhead.next;
while(index>0){
cur=cur.next;
index--;
}
return cur.val;
}
public void addAtHead(int val) {
ListNode node=new ListNode(val);
node.next=dummyhead.next;
dummyhead.next=node;
//更新容量
size++;
}
public void addAtTail(int val) {
cur=dummyhead;
while(cur.next!=null){
cur=cur.next;
}
ListNode node=new ListNode(val);
cur.next=node;
node.next=null;
size++;
}
public void addAtIndex(int index, int val) {
if(index>size||index<0){
return ;
}
cur=dummyhead;
while(index>0){
cur=cur.next;
index--;
}
//找到要插入的位置的前一个节点
ListNode node=new ListNode(val);
node.next=cur.next;
cur.next=node;
size++;
}
public void deleteAtIndex(int index) {
if(index>=size||index<0){
return ;
}
cur=dummyhead;
while(index>0){
cur=cur.next;
index--;
}
//找到要删除的位置的前一个节点
cur.next=cur.next.next;
size--;
}
}
编码过程还是不够细致,边界条件没考虑到,应该多测试边界
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。