golang数据结构和算法之StackLinkedList链表堆栈

内容导读

互联网集市收集整理的这篇技术教程文章主要介绍了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 举报,一经查实,本站将立刻删除。

内容手机端