public class ListNode{
int val;
ListNode next;
ListNode(int x){
val=x;
}
/*ListNode(){}
ListNode(int val,ListNode next){
this.val=val;
this.next=next;
}*/
}
class MyLinkedList{
int size;//来记录链表长度,每次调用增加节点或者减少节点时修改其值
ListNode head;//设置虚拟节点
public MyLinkedList(){
size=0;
head=new ListNode(0);//虚拟节点不计入长度计算
}
public int get(int index) {
if(index<0||index>=size) {//由于链表节点下标index由0开始(⚠️,),而size的大小是除虚拟节点之外的节点总个数,所以节点下标index范围为[0-(size-1)]
return -1;
}
ListNode cur=head;
while(index+1>0) {//加1是因为虚拟节点的原因
cur=cur.next;
index--;
}
return cur.val;
}
public void addAtHead(int val) {
addAtIndex(0,val);
}
public void addAtTail(int val) {
addAtIndex(size,val);
}
public void addAtIndex(int index,int val) {
if(index>size) {
return ;
}
if(index<0) {
index=0;
}
size++;//修改链表长度
ListNode pred=head;
for(int i=0;i<index;++i) {//到达index-1节点,从虚拟节点开始走需要走index步
pred=pred.next;
}
ListNode toadd=new ListNode(val);
toadd.next=pred.next;
pred.next=toadd;
//size++;
}
public void deleteAtIndex(int index) {
if(index<0||index>=size)
return ;
size—;//修改链表长度
ListNode cur=head;
for(int i=0;i<index;++i) {//到达index-1节点,从虚拟节点开始走需要走index步
cur=cur.next;
}
cur.next=cur.next.next;
}
}
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!