Go数据结构之栈 stack

package main

import (
	//"errors"
	"fmt"
)

type stack struct {
	size int // 栈容量
	top  int // 栈顶
	data []interface{}  // 数据
}

const stackSize = 15
var stackData = make([]interface{}, stackSize)

// 初始化栈
func initStack() stack {
	s := stack{
		size: stackSize,
		top: -1,
		data: stackData,
	}
	return s
}

func (this *stack) Empty() bool {
	// 判断栈是否为空
	return this.top == -1
}

func (this *stack) IsFull() bool {
	// 判断栈是否已满
	return this.top == this.size - 1
}

func (this *stack) Push(val interface{}) bool {
	// 入栈
	if this.IsFull() {
		fmt.Println("栈已满")
		//return errors.New("Stack isFull")
		return false
	}
	this.top += 1 // 栈顶加1
	//fmt.Println(val.(string))
	this.data[this.top] = val  // 将当前元素放在栈顶
	return true
}

func (this *stack) Pop() interface{}{
	if this.Empty(){
		fmt.Println("栈是空的")
		return nil
	}
	popIndex := this.top
	this.top--
	return this.data[popIndex]
}

func (this *stack) Tr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值