566
社区成员
发帖
与我相关
我的任务
分享
// 定义结点
type Node struct {
val int
next *Node
}
// 定义链表
type LinkedList struct {
dummy *Node
}
// 初始化链表
func Constructor() LinkedList {
return LinkedList {
&Node{},
}
}
// 获取index位置节点
func (this *LinkedList) Get(index int) int {
if(index < 0) return -1
head := this.dummy.next
if head == nil return -1
for head.next != nil && index > 0{
head = head.next
index--
}
return head.val
}
// 头插法
func (this *LinkedList) AddAtHead(val int) {
dummy := this.dummy
node := &Node{
val: val,
next: dummy.next,
}
this.dummy.next = node
}
// 尾插法
func (this *LinkedList) AddAtTail(val int) {
dummy := this.dummy
for dummy.next != nil {
dummy = dummy.next
}
rear := &Node{
val: val,
next: nil,
}
dummy.next = rear
}
// 在index位置插入节点
func (this *LinkedList) AddAtIndex(val int, index int) {
if(index < 0) return
dummy := this.dummy
for dummy.next != nil && index > 0 {
dummy = dummy.next
index--
}
if index != 0 {
return
}
node := &Node{
val: val,
}
node.next = dummy.next
dummy.next = node
}
// 在index位置删除节点
func (this *LinkedList) DeleteAtIndex(index int) {
if(index < 0) return
if this.dummy.next == nil {
return
}
dummy := this.dummy
for dummy.next != nil && index > 0 {
dummy = dummy.next
index--
}
if dummy.next != nil && index == 0 {
dummy.next = dummy.next.next
}
}
https://github.com/Y-SYN
学号:523