您的位置:首页 > 其它

单链表的简单实现

2015-08-25 15:11 295 查看
// list project list.go
package main

import (
"fmt"
)

type ListEntry struct {
next *ListEntry
data interface{}
}

var ListHead *ListEntry

func (this *ListEntry)Insert(next_entry *ListEntry) {
if ListHead == nil {
ListHead = next_entry
next_entry.next = nil
return
}

var last_entry *ListEntry
for last_entry = ListHead; last_entry.next != nil; last_entry = last_entry.next {
}

last_entry.next = next_entry
next_entry.next = nil

return
}

func (this *ListEntry)Remove(entry *ListEntry) {
if ListHead == nil {
return
}

if ListHead.data == entry.data {
ListHead = ListHead.next
return
}

prev_entry := ListHead
if prev_entry.next == nil {
return
}

for {
if prev_entry.next.data != entry.data {
prev_entry = prev_entry.next
if prev_entry == nil || prev_entry.next == nil {
return
}
} else {
break
}
}

prev_entry.next = prev_entry.next.next

return
}

func (this *ListEntry)PrintData() {
for entry := ListHead; entry != nil; entry = entry.next {
fmt.Println(entry.data)
}
}

func main() {
var List ListEntry

for i := 0; i < 10; i++ {
List.Insert(&ListEntry{nil, i})
}

List.Remove(&ListEntry{nil, -2})
List.Remove(&ListEntry{nil, 5})
List.PrintData()
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: