首页 > 其他 > 详细

Go数据结构之Stack

时间:2014-06-07 05:07:01      阅读:374      评论:0      收藏:0      [点我收藏+]

Stack

              一个简单确很有用的数据结构:FILO

bubuko.com,布布扣
package Stack
import (
    "errors"
    "fmt"
)

const (
    defaultLength=100
)

type Stack struct{
    top int
    size int
    element []interface {}
}
/**
    根据给定的大小初始话stack
 */
func NewStackBySize(size int) *Stack{
    return &Stack{size,size,make([]interface {},size)}
}
/**
    根据默认的大小初始话stack
 */
func NewStack() *Stack{
    return NewStackBySize(defaultLength)
}
/**
    判断stack是否为空
 */
func (stack *Stack)IsEmpty() bool{
    return stack.top==stack.size-1
}
/**
    判断stack是否已经满了
 */
func (stack *Stack)IsFull() bool{
    return stack.top == 0
}
/**
    清空stack
 */
func (stack * Stack)Clear(){
    stack.top=stack.size
}
/**
    弹出一个元素
 */
func (stack *Stack)Pop() (interface {},error){
    if stack.IsEmpty()==true{
        return nil, errors.New("The Stack is empty")
    }
    stack.top=stack.top+1
    return stack.element[stack.top-1], nil
}
/**
    压入一个元素
 */
func (stack *Stack)Push(e interface {}) error{
    if stack.IsFull()==true{
        return errors.New("The Stack is full")
    }
    stack.top=stack.top-1
    stack.element[stack.top]=e
    return nil
}
func (stack *Stack)PrintStack(){
    i:=stack.top
    for{
        if i==stack.size{
            break
        }
        fmt.Print(stack.element[i],"\n")
        i=i+1
    }
}
bubuko.com,布布扣

 

Go数据结构之Stack,布布扣,bubuko.com

Go数据结构之Stack

原文:http://www.cnblogs.com/requelqi/p/3755921.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!