内容简介:两栈共享空间的结构的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指针、数组和结构体
- 请问二叉树等数据结构的物理存储结构是怎样的?
- 数据结构——单链表
- 常用数据结构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms for Image Processing and Computer Vision
Parker, J. R. / 2010-12 / 687.00元
A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!