如何打印链表



下面是代码:

package collection
type List struct {
head *Node
tail *Node
}
func (l *List) First() *Node {
return l.head
}
func (l *List) Push(value int) {
node := &Node{value: value}
if l.head == nil { // list is empty
l.head = node
} else {
l.tail.next = node
}
l.tail = node
}
func (l *List) String() string {
var list string
n := l.First()
for n != nil {
list = list + string(n.Value()) + " "
n = n.Next()
}
return list
}
type Node struct {
value int
next  *Node
}
func (n *Node) Next() *Node {
return n.next
}
func (n *Node) Value() int {
return n.value
}

在调试时,元素被成功推送

但是对于list = list + string(n.Value()) + " ",这是调试输出:list: " "


package main
import (
"fmt"
"github.com/myhub/cs61a/collection"
)
func main() {
l := &collection.List{}
l.Push(1)
l.Push(2)
l.Push(3)
fmt.Println(l)
}

1(为什么list = list + string(n.Value()) + " "不连接整数?

2( 如何支持任何类型的会员valueNode

使用strconv.Itoa()将 int 转换为字符串。

list = list + strconv.Itoa(n.Value()) + " "

在普通转换中,该值被解释为 Unicode 代码点,生成的字符串将包含该代码点表示的字符,以 UTF-8 编码。

s := string(97) // s == "a"

对于您的情况,1,2,3 都是不可打印的字符

相关内容

  • 没有找到相关文章

最新更新