get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。 addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。 addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。 deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。
func(this *MyLinkedList) AddAtIndex(index int, val int) { if index <= 0 { this.AddAtHead(val) return } tmp := this.Next // 遍历到index处 for i := 1; i < index && tmp.Next != nil; i++ { tmp = tmp.Next } // index超出链表长度 if tmp == nil { return } tmp.Next = &MyLinkedList{ Val: val, Next: tmp.Next, } }
func(this *MyLinkedList) DeleteAtIndex(index int) { // 空链表 if this.Next == nil { return } if index <= 0 { this.Next = this.Next.Next return } tmp := this.Next for i := 1; i < index && tmp.Next != nil; i++ { tmp = tmp.Next } // index超出链表长度 if tmp.Next == nil { return } tmp.Next = tmp.Next.Next }
/** * Your MyLinkedList object will be instantiated and called as such: * obj := Constructor(); * param_1 := obj.Get(index); * obj.AddAtHead(val); * obj.AddAtTail(val); * obj.AddAtIndex(index,val); * obj.DeleteAtIndex(index); */