// 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()
}
单链表的简单实现
最新推荐文章于 2022-10-31 22:08:16 发布