内容简介:两栈共享空间的结构的golang代码如下:
图片来源于《大话数据结构》
图片来源于《大话数据结构》
两栈共享空间的结构的golang代码如下:
package stack
import (
"fmt"
"errors"
)
//共享栈
const MaxDoubleSize = 20 //存储空间初始分配量
type DoubleStack struct {
data [MaxDoubleSize]SElemType
top1 int //栈1栈顶指针
top2 int //栈2栈顶指针
}
// 初始化一个空栈
func (d *DoubleStack) InitStack () {
d.top1 = -1
d.top2 = MaxDoubleSize
}
// 把d置为空栈
func (d *DoubleStack) ClearStack() {
d.top1 = -1
d.top2 = MaxDoubleSize
}
// 若栈l为空栈,则返回true 否则返回false
func (d *DoubleStack) IsEmpty() bool {
if d.top1 == -1 && d.top2 ==MaxDoubleSize {
return true
} else {
return false
}
}
// 返回s的元素个数,即栈的长度
func (d *DoubleStack) Length() int {
return (d.top1 + 1) + (MaxDoubleSize-1-d.top2)
}
// 插入元素e为新的栈顶元素,栈满返回error
func (d *DoubleStack) Push(e SElemType, stackNum int) error {
if d.top1 + 1 == d.top2 {
return errors.New("stack is full")
}
// 栈1有元素进栈
if stackNum == 1 {
d.top1++
d.data[d.top1] = e
} else if stackNum ==2 { // 栈2有元素进栈
d.top2--
d.data[d.top2] = e
}
return nil
}
// 若栈不空,则删除d的栈顶元素 用e返回其值,否则返回error
func (d *DoubleStack) Pop(stackNum int) (e SElemType,err error) {
if stackNum == 1 {
if d.top1 == -1 {
return 0, errors.New("stack is empty") //栈1为空,已溢出
}
e = d.data[d.top1]
d.top1--
} else if stackNum == 2 {
if d.top2 == MaxDoubleSize {
return 0, errors.New("stack is empty") //栈2为空,已溢出
}
e = d.data[d.top2]
d.top2++
}
return
}
//遍历栈
func (d *DoubleStack) Traverse() {
for i:=0; i <= d.top1 ; i++ {
fmt.Println(d.data[i])
}
for i:=d.top2; i < MaxDoubleSize ; i++ {
fmt.Println(d.data[i])
}
}
func TestDoubleStack() {
var s DoubleStack
s.InitStack()
for j:=1;j <= 5 ; j++ {
s.Push(SElemType(j),1)
}
for j:=MaxDoubleSize;j >= MaxDoubleSize-2 ; j-- {
s.Push(SElemType(j),1)
}
fmt.Println("栈中的元素为:")
s.Traverse()
e, _ := s.Pop(1)
fmt.Println("弹出的元素为:", e)
fmt.Println("栈是否为空:", s.IsEmpty())
fmt.Println("栈的长度:", s.Length())
s.ClearStack()
fmt.Println("栈是否为空:", s.IsEmpty())
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 数据结构 – 用于构建文件系统的数据结构?
- 荐 用Python解决数据结构与算法问题(三):线性数据结构之栈
- 数据结构和算法面试题系列-C指针、数组和结构体
- 请问二叉树等数据结构的物理存储结构是怎样的?
- 数据结构——单链表
- 常用数据结构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
风云Flash ActionScript高级编程艺术
赵英杰 / 第1版 (2006年7月1日) / 2006-7 / 45.00元
本书从基本的Actionscript语言概念开始介绍,配以实际的程序实例并穿插生动的图示说明,深入浅出地讲解Flash ActionScript程序的运用逻辑与概念,让读者从实例中学习进而融会贯通。同时,本书也说明面向对象程序设计(00P)的语法及常用类别实例,提升读者制作F1ash作品的造诣和能力。全书共分为10章,精彩实例包括以三角函数制作的抽奖轮盘,FlashLite手机版孔明棋游戏,Bit......一起来看看 《风云Flash ActionScript高级编程艺术》 这本书的介绍吧!