内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了golang数据结构和算法之StackLinkedList链表堆栈,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1636字,纯文字阅读大概需要3分钟。
内容图文
会了上一个,这个就差不离了。
StackLinkedList.go
package StackLinkedList type Node struct { data int next *Node } type Stack struct { top *Node } func (list *Stack) Push(i int) { data := &Node{data: i} if list.top != nil { data.next = list.top } list.top = data } func (list *Stack) Pop() (int, bool) { if list.top == nil { return 0, false } i := list.top.data list.top = list.top.next return i, true } func (list *Stack) Peek() (int, bool) { if list.top == nil { return 0, false } return list.top.data, true } func (list *Stack) Get() [] int { var items[]int current := list.top for current != nil { items = append(items, current.data) current = current.next } return items } func (list *Stack) IsEmpty() bool { return list.top == nil } func (list *Stack) Empty() { list.top = nil }
StackLinkedList_test.go
package StackLinkedList import ( "fmt" "math/rand" "testing" "time" ) func TestStackLinkedList(t *testing.T) { random := rand.New(rand.NewSource(time.Now().UnixNano())) headNode := &Node{ data: random.Intn(100), next: nil, } stackLinkedList := &Stack{ top: headNode, } fmt.Println(stackLinkedList.Get()) randNumber := random.Intn(100) stackLinkedList.Push(randNumber) stackLinkedList.Push(random.Intn(100)) stackLinkedList.Push(random.Intn(100)) stackLinkedList.Push(random.Intn(100)) fmt.Println(stackLinkedList.Get()) retResult, retBool := stackLinkedList.Pop() if retBool == true { fmt.Println(retResult) } stackLinkedList.Empty() if stackLinkedList.IsEmpty() == false { t.Fail() } }
输出:
D:/Go/bin/go.exe test -v [D:/go-project/src/StackLinkedList] === RUN TestStackLinkedList [84] [34 74 26 11 84] 34 --- PASS: TestStackLinkedList (0.00s) PASS ok StackLinkedList 2.680s 成功: 进程退出代码 0.
内容总结
以上是互联网集市为您收集整理的golang数据结构和算法之StackLinkedList链表堆栈全部内容,希望文章能够帮你解决golang数据结构和算法之StackLinkedList链表堆栈所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。