数据结构:栈-链表实现
数据结构 大约 1535 字定义链表的节点
type Node struct {
Value string
Next *Node
}
定义链表栈
type LinkedListStack struct {
PutPointer *Node // 链表最后一个节点
HeadNode *Node
}
定义入栈方法
func (stack *LinkedListStack) Put(value string) {
node := &Node{Value: value}
// 第一个节点
if stack.HeadNode == nil {
stack.HeadNode = node
stack.PutPointer = stack.HeadNode
return
}
// 之后的节点
stack.PutPointer.Next = node
// Put指针往后移
stack.PutPointer = stack.PutPointer.Next
}
定义弹栈方法
func (stack *LinkedListStack) Pop() {
if stack.HeadNode.Next == nil {
fmt.Println("Pop#", stack.HeadNode.Value)
stack.HeadNode = nil
stack.PutPointer = nil
} else {
temp := stack.HeadNode
for temp.Next != nil{
if temp.Next.Next == nil {
break
}
temp = temp.Next
}
fmt.Println("Pop#", temp.Next.Value)
temp.Next = nil
stack.PutPointer = temp
}
}
测试代码
func main() {
linkedListStack := &LinkedListStack{}
linkedListStack.Put("aaa")
linkedListStack.Put("bbb")
linkedListStack.Put("ccc")
linkedListStack.Pop()
linkedListStack.Pop()
linkedListStack.Pop()
linkedListStack.Put("ddd")
linkedListStack.Put("eee")
linkedListStack.Put("fff")
linkedListStack.Pop()
linkedListStack.Print()
}
func (stack *LinkedListStack) Print() {
temp := stack.HeadNode
for temp != nil {
fmt.Println("value#", temp.Value)
temp = temp.Next
}
}
阅读 1361 · 发布于 2021-01-25
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Spring Boot logback springProperty 设置默认值阅读 5394
-
Vue keep-alive 缓存动态组件实例不销毁组件阅读 814
-
IDEA 版 Postman HTTP Client 测试 API 接口阅读 1587
-
Windows 使用 PowerShell 保存 SSH 信息实现快捷登录阅读 2763
-
走进 Spring Boot 第二步之 SpringApplicaiton 构造函数阅读 3951
-
minikube 与本地机器之间传递文件阅读 609
-
Linux CentOS 安装 MySQL5.7阅读 4367
-
Android 每隔一分钟发出时间更新广播阅读 5009
-
Java 并发编程之 CopyOnWriteArrayList阅读 1560
-
Elasticsearch 获取记录总数 _count阅读 10607