加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

go语言实现顺序存储的栈

发布时间:2016-12-04 16:11:44 所属栏目:教程 来源:站长网
导读:本文实例讲述了go语言实现顺序存储的栈。分享给大家供大家参考。具体如下: 1. sequence.go代码如下: 复制代码 代码如下://////// // 顺序存储的栈 //////// package sequence const MAXSIZE = 20 type Stack struct { nbsp;nbsp;nbsp; Data [MAXSIZE]int

本文实例讲述了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语言程序设计有所帮助。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读