美文网首页
利用数组实现栈操作(go版本)

利用数组实现栈操作(go版本)

作者: 小王同学123321 | 来源:发表于2022-04-09 12:31 被阅读0次
    package main
    
    import "fmt"
    
    type Stacker interface {
        Newstack() interface{}
        IsEmpty() bool
        Pushstack(value interface{})
        Pop() interface{}
        Print()
        Clear()
    }
    
    type StackInfo struct {
        DataStore []interface{}
        Size int
    }
    
    func Newstack() *StackInfo{
        tmpstack := new(StackInfo)
        tmpstack.DataStore = make([]interface{},0)
        tmpstack.Size = 0
        return tmpstack
    }
    
    func (s *StackInfo) IsEmpty() bool{
        return s.Size == 0
    }
    
    func (s *StackInfo) Pushstack(value interface{}){
        s.DataStore = append(s.DataStore,value)
        s.Size++
    }
    
    func (s *StackInfo) Popstack() interface{}{
        length := len(s.DataStore)
        if length == 0{
            return nil
        } else if length == 1{
            return s.DataStore[0]
            s.Size--
        }else {
            popvalue := s.DataStore[length-1]
            s.DataStore = s.DataStore[:length-1]
            s.Size--
            return popvalue
        }
        return nil
    }
    
    func (s *StackInfo) Clear() *StackInfo {
        return new(StackInfo)
    }
    
    func (s *StackInfo) Print(){
        for index,v := range s.DataStore{
            fmt.Printf("%v---%v\n",index,v)
        }
    }
    
    
    func main(){
        stack := Newstack()
        stack.Pushstack("a")
        stack.Pushstack("1")
        stack.Pushstack("2")
        stack.Pushstack(1)
        fmt.Println(stack.Popstack())
        fmt.Println(*stack)
        stack.Print()
        fmt.Println(stack.Clear())
    }
    
    结果

    相关文章

      网友评论

          本文标题:利用数组实现栈操作(go版本)

          本文链接:https://www.haomeiwen.com/subject/qwiysrtx.html