单链表的简单实现
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() }
相关文章推荐
- Android消息处理机制——Looper,Handler,Message,MessageQueue,Thread
- poj-2104(主席树)
- typeid详解
- C# 读取 vCard 格式
- MVC页面直接F5出错
- iOS推送跳转AppDelegate跳转VC
- 微信jsapi接口测试
- dwz框架分页组件使用
- jquery ajax之点赞功能的实现
- 如何搭建 Nginx 网站服务器
- s2sh开发环境搭建遇到的问题总结
- tableview & collection view
- 基础总结篇之一 ;Activity生命周期
- php\shell 中改变和获取工作目录、执行文件目录
- 原生js(form)验证,可以借鉴下思路,应用到工作中
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- 求最大公约数的两种算法(Euclid&&Stein)
- 从使用层面上了解委托和事件的区别
- NGSQC toolkit
- SPFA