go语言这个链表实现哪儿有问题?求路过大神指导

weixin_38060626 2019-09-20 10:52:20
##link.go 的代码如下:
package main

import "fmt"

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

type Link struct {
head *LinkNode
tail *LinkNode
}

func (p *Link) InsertHead(data interface{}) {
node := &LinkNode{
data: data,
next: nil,
}
if p.head == nil && p.tail == nil {
p.head = node
p.tail = node
return
}
node.next = p.head
p.head = node

}

func (p *Link) InsertTail(data interface{}) {
node := &LinkNode{
data: data,
next: nil,
}

if p.head == nil && p.tail == nil {
p.head = node
p.tail = node
return
}
p.tail.next = node
p.tail = node

}

func (p *Link) Trans() {
q := p.head
if q != nil {
fmt.Println(q.data)
q = q.next
}

}`

##测试的main.go 代码如下:


' package main

func main() {
var l Link
for i := 1; i < 10; i++ {
l.InsertTail(i)
//l.InsertTail(fmt.Sprintf("str %d", i))

}
l'.T-ns()
}


##打印结果,不管我是尾插,还是头插打印了一个出来。。。

...全文
34 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38064966 2019-09-20
  • 打赏
  • 举报
回复
你的遍历函数写的有问题,没有用循环。
weixin_38078612 2019-09-20
  • 打赏
  • 举报
回复
遍历函数用了if判断
weixin_38096180 2019-09-20
  • 打赏
  • 举报
回复
看了半天链表链接,都没有发现问题。建议你试试把遍历函数的if换成for 试试
weixin_38098679 2019-09-20
  • 打赏
  • 举报
回复
前面链表的数据结构表示,就存在问题,不清晰,不符合链表节点的定义。 按照你这个意思,是双向链表,链表中的每一个节点,应该包含3个属性:本节点的数据,前一节点的指向,后一节点的指向。指向可以用指针、序号,等等来表示。 你前面那个链表的GO实现数据结构,显然不符合链表的数据结构表达。 数据结构表达就存在问题,后面的算法就没有看下去的必要了。 数据结构首先要表达正确,后面的算法才存在价值。
weixin_38108526 2019-09-20
  • 打赏
  • 举报
回复
只是把Linknode与link分开了而已,应该还是链表吧,只是这样更容易理解一点

473

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧