zoukankan      html  css  js  c++  java
  • go 实现栈

    使用切片的方式实现简单的栈

    package main
    
    import "fmt"
    type Element interface{}//可存入任何类型
    
    
    type Stack struct {
    	list []Element
    }
    
    //初始化栈
    func NewStack()*Stack {
    	return &Stack{
    		list: make([]Element,0),
    	}
    }
    
    func (s*Stack)Len()int  {
    	return len(s.list)
    }
    
    //判断栈是否空
    func (s*Stack)IsEmpty()bool  {
    	if len(s.list)==0{
    		return true
    	}else{
    		return false
    	}
    }
    
    //入栈
    func (s *Stack)Push(x interface{})  {
    	s.list = append(s.list,x)
    }
    
    //连续传入
    func (s *Stack)PushList(x []Element)  {
    	s.list = append(s.list,x...)
    }
    
    //出栈
    func (s*Stack)Pop() Element{
    	if len(s.list)<=0{
    		fmt.Println("Stack is Empty")
    		return nil
    	}else {
    		ret:=s.list[len(s.list)-1]
    		s.list = s.list[:len(s.list)-1]
    		return ret
    	}
    }
    
    //返回栈顶元素,空栈返nil
    func (s*Stack)Top() Element {
    	if s.IsEmpty()==true{
    		fmt.Println("Stack is Empty")
    		return nil
    	}else{
    		return s.list[len(s.list)-1]
    	}
    }
    
    //清空栈
    func (s*Stack)Clear()bool{
    	if len(s.list)==0{
    		return true
    	}
    	for i:=0;i<s.Len();i++{
    		s.list[i]=nil
    	}
    	s.list = make([]Element,0)
    	return true
    }
    
    //打印测试
    func (s *Stack)Show()  {
    	len:=len(s.list)
    	for i:=0;i!=len;i++{
    		fmt.Println(s.Pop())
    	}
    }
    
    func main()  {
    	stack:=NewStack()
    	stack.Push(1)
    	stack.Push(2)
    	stack.Push(3)
    	stack.Pop()
    	stack.PushList([]Element{4,5,6,7})//list方式放入1
    	fmt.Println("Stack len is ",stack.Len())
    	fmt.Println("Top is",stack.Top())//栈顶元素
    	stack.Show()//show之后数据已经清空
    }
    

      

  • 相关阅读:
    Spring格式化注解
    Mysql 慢查询和慢查询日志分析
    jQuery中的end()方法
    webService学习笔记
    让Hibernate和触发器协同工作
    JavaScript中的setInterval用法
    jQuery中事情的动态绑定
    mongoDB如何处理多对多关系
    新生儿信息管理系统在线帮助
    MySQL数据库安装与配置详解
  • 原文地址:https://www.cnblogs.com/9527s/p/13582546.html
Copyright © 2011-2022 走看看