本文实例讲述了go语言实现顺序存储的栈。分享给大家供大家参考。具体如下:
1. sequence.go代码如下:
复制代码 代码如下:////////
// 顺序存储的栈
////////
package sequence
const MAXSIZE = 20
type Stack struct {
nbsp;nbsp;nbsp; Data [MAXSIZE]int //存储栈元素
nbsp;nbsp;nbsp; Topnbsp; intnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //指向栈顶,总是指向顶部元素,空时为-1
}
//压栈
//d:栈元素
func (s *Stack) Push(d int) bool {
nbsp;nbsp;nbsp; if s.Top+1 gt; MAXSIZE {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; return false
nbsp;nbsp;nbsp; }
nbsp;nbsp;nbsp; s.Data[s.Top+1] = d
nbsp;nbsp;nbsp; s.Top++
nbsp;nbsp;nbsp; return true
}
//弹栈
func (s *Stack) Pop() int {
nbsp;nbsp;nbsp; if s.Top == -1 {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; return 0
nbsp;nbsp;nbsp; }
nbsp;nbsp;nbsp; s.Data[s.Top] = 0
nbsp;nbsp;nbsp; d := s.Data[s.Top]
nbsp;nbsp;nbsp; s.Top--
nbsp;nbsp;nbsp; return d
}
//取栈的容量
func (s *Stack) GetVol() int {
nbsp;nbsp;nbsp; return len(s.Data)
}
//取栈的长度
func (s *Stack) GetLength() int {
nbsp;nbsp;nbsp; c := s.Top + 1
nbsp;nbsp;nbsp; return c
}
2. main.go代码如下:
复制代码 代码如下:package main
import (
nbsp;nbsp;nbsp; "fmt"
nbsp;nbsp;nbsp; "stack/sequence"
)
func main() {
nbsp;nbsp;nbsp; //初始化一个栈
nbsp;nbsp;nbsp; var s sequence.Stack
nbsp;nbsp;nbsp; s.Top = -1
nbsp;
nbsp;nbsp;nbsp; //压入10个元素
nbsp;nbsp;nbsp; for i := 1; i lt;= 10; i++ {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; s.Push(i)
nbsp;nbsp;nbsp; }
nbsp;nbsp;nbsp; fmt.Println(s)
nbsp;nbsp;nbsp; fmt.Println(s.GetVol())nbsp;nbsp;nbsp; //容量
nbsp;nbsp;nbsp; fmt.Println(s.GetLength()) //长度
nbsp;
nbsp;nbsp;nbsp; //弹出一个元素
nbsp;nbsp;nbsp; s.Pop()
nbsp;nbsp;nbsp; s.Pop()
nbsp;nbsp;nbsp; fmt.Println(s)
nbsp;nbsp;nbsp; fmt.Println(s.GetVol())nbsp;nbsp;nbsp; //容量
nbsp;nbsp;nbsp; fmt.Println(s.GetLength()) //长度
}
希望本文所述对大家的Go语言程序设计有所帮助。 (编辑:成都站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|