内容简介:两栈共享空间的结构的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())
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
世界是平的(3.0版)
[美] 托马斯·弗里德曼 / 何帆、肖莹莹、郝正非 / 湖南科学技术出版社 / 2008-9 / 58.00元
世界变得平坦,是不是迫使我们跑得更快才能拥有一席之地? 在《世界是平的》中,托马斯·弗里德曼描述了当代世界发生的重大变化。科技和通信领域如闪电般迅速的进步,使全世界的人们可以空前地彼此接近——在印度和中国创造爆炸式增长的财富;挑战我们中的一些人,比他们更快占领地盘。3.0版新增两章,更新了报告和注释方面的内容,这些内容均采自作者考察世界各地特别是整个美国中心地带的见闻,在美国本土,世界的平坦......一起来看看 《世界是平的(3.0版)》 这本书的介绍吧!