回顾:链表构建器
本课属于 Coddy GO 学习旅程的“面向对象编程”单元。第 24 课,共 107 课。
挑战
简单让我们从头开始构建一个链表!你将创建一种数据结构,其中每个节点都指向下一个节点,在内存中形成一串相连的值。
你将把代码组织在两个文件中:
linkedlist.go:定义一个Node结构体,其中包含Value(int)和Next(*Node)字段。创建一个LinkedList结构体,其中保存一个指向Head节点的指针。在*LinkedList上实现以下方法:Append:将一个包含给定值的新节点添加到列表末尾Prepend:将一个包含给定值的新节点添加到列表开头Print:遍历列表,打印所有值,值之间用->分隔,并以nil结尾
main.go:从输入中读取值,通过追加和前置节点来构建链表,然后打印最终的链表结构。
将提供以下输入:
- 第 1 行:要追加的第一个值
- 第 2 行:要追加的第二个值
- 第 3 行:要前置的值
你的 Print 方法应按以下格式输出链表:
[value1] -> [value2] -> [value3] -> nil例如,给定 10、20 和 5,你的输出应为:
5 -> 10 -> 20 -> nilAppend 方法需要先遍历到列表末尾(此处 Next 为 nil),再添加新节点。Prepend 方法应创建一个新节点,将它的 Next 指向当前头节点,然后把头节点更新为这个新节点。请记住,空列表的头节点是 nil,因此要在 Append 方法中处理这种情况。
亲手试试
package main
import "fmt"
func main() {
// 读取输入值
var val1, val2, val3 int
fmt.Scanln(&val1)
fmt.Scanln(&val2)
fmt.Scanln(&val3)
// 创建一个新的链表
list := &LinkedList{}
// TODO:使用 Append 将 val1 和 val2 添加到列表中
// TODO:使用 Prepend 将 val3 添加到列表开头
// TODO:打印最终的列表结构
}
面向对象编程中的所有课
自己练习: Go 在线编译器