• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go实现栈

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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之后数据已经清空
}

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go中的Init函数发布时间:2022-07-12
下一篇:
vim自动补全:go发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap