当前位置: 首页 > news >正文

做农产品网站国内无代码开发平台

做农产品网站,国内无代码开发平台,虚拟主机建设网站绑定域名,代发关键词包收录线性表中#xff0c;栈和队列是非常重要的两种数据结构#xff0c;本文将就这两种数据结构进行 golang语言实现参考#xff1a;go语言中文文档#xff1a;www.topgoer.com转自#xff1a;https://www.jianshu.com/p/e8de9ac93cbc一.栈的实现我们需要实现如下几个方法push(…线性表中栈和队列是非常重要的两种数据结构本文将就这两种数据结构进行 golang语言实现参考go语言中文文档www.topgoer.com转自https://www.jianshu.com/p/e8de9ac93cbc一.栈的实现我们需要实现如下几个方法push() 向栈中压入一个元素pop() 从栈顶取出一个元素isEmpty() 判断栈是否为空length() 获取栈中元素的数目peer() 查询栈顶元素我们需要注意 peer() 方法并不会将栈顶元素删除数组实现如下type stack struct { cache []int}func (sk *stack) push(n int) { sk.cache append(sk.cache, n)}func (sk stack) length() int { return len(sk.cache)}func (sk *stack) pop() int { if sk.length() 0 { return 0 } item : sk.cache[sk.length()-1] sk.cache sk.cache[:len(sk.cache)-1] return item}func (sk stack) isEmpty() bool { return len(sk.cache) 0}func (sk stack) peer() int { return sk.cache[sk.length()-1]}接下来我们将用链表实现以下项目并使用 interface{} 来代替 int实现多种类型的兼容type stackLink struct { Top *node Length int}type node struct { Val interface{} Prev *node}func (sl *stackLink) push(value interface{}) { newNode : node{ Val: value, Prev: sl.Top} sl.Top newNode sl.Length}func (sl *stackLink) pop() interface{} { topNodeVal : sl.Top.Val sl.Top sl.Top.Prev sl.Length-- return topNodeVal}func (sl stackLink) length() int { return sl.Length}func (sl stackLink) isEmpty() bool { return sl.Length 0}func (sl stackLink) peer() interface{} { return sl.Top.Val}由于任何的变量都实现了空接口所以我们可以通过传递空接口来实现在栈中压入不同元素的目的二.队列实现同样我们对于队列实现了如下方法enqueue() 入队列dequeue() 出队列isEmpty() 判断队列是否为空getLength() 获队列的长度链表实现方式如下type queue struct { First *node Last *node Len int}type node struct { Val interface{} Next *node Pre *node}func (qu *queue) enqueue(data interface{}) { nNode : node{ Val: data, Pre: qu.First, Next: nil} if qu.First nil { qu.First nNode } else { qu.First.Next nNode qu.First nNode } if qu.Last nil { qu.Last nNode } qu.Len}func (qu *queue) dequeue() interface{} { if qu.Len 0 { nNode : qu.Last.Val if qu.Last.Next ! nil { qu.Last.Next.Pre nil } qu.Last qu.Last.Next qu.Len-- return nNode } return errors.New(error)}func (qu queue) isEmpty() bool { return qu.Len 0}func (qu queue) getLength() int { return qu.Len}三.栈和队列的应用在这一部分我们通过栈来实现表达式的计算例如我们需要计算 (1((23)*(4*5)))我们维护两个栈一个是值栈一个是操作栈我们在读取表达式的时候采取如下的策略如果遇到 (我们将忽略它如果遇到数字将其压入值栈如果遇到操作符将其压入操作栈如果遇到 )我们从值栈中取出两个值 n1和 n2在操作栈中我们取出一个操作符 op我们进行 n2 op n1的操作(例如 n1 3n2 9op /我们将执行 9/3 )将所得的结果压入值栈func stackCompute(str string) int { var ( vsk stackLink opsk stackLink ) for _, v : range str { if v 9 v 0 { vsk.push(int(v) - 0) } else if v || v - || v * || v / { opsk.push(int(v)) } else if v ) { n1 : vsk.pop().(int) n2 : vsk.pop().(int) op : opsk.pop().(int) var ans int switch op { case : ans n2 n1 case -: ans n2 - n1 case *: ans n2 * n1 case /: ans n2 / n1 } vsk.push(int(ans)) } } for !opsk.isEmpty() { n1 : vsk.pop().(int) n2 : vsk.pop().(int) op : opsk.pop().(int) var ans int switch op { case : ans n2 n1 case -: ans n2 - n1 case *: ans n2 * n1 case /: ans n2 / n1 } vsk.push(int(ans)) } char : vsk.pop().(int) return int(char)}我们如下调用stackCompute((1((23)*(4*5))))将会得到结果 101
http://www.huolong8.cn/news/120173/

相关文章:

  • 怎样进入谷歌网站百度一下 你就知道官方
  • 网站开发费用说明design设计网站
  • 怎么优化网站源码关键词wordpress教程dara
  • 广西工商网站查询企业信息品牌设计公司成都
  • 返利淘客网站源码法律网站开发
  • 杨浦网站建设_网站外包网站开发和竞价
  • 网站建设套模板视频客户关系管理定义
  • 网站dns设置装修网十大平台
  • 获取网站域名网站ftp怎么登陆
  • 在windows2003上做网站怎样做网站搜索推广电话成都
  • 进入官方网站如何做网站产品图片
  • 网站分享组件重庆市建设工程造价信息官网
  • 免费建站团队园林绿化
  • 菏泽哪里有做网站的微网站建设哪家便宜
  • 怎样查看网站制作公司建设网站的 域名申请的分析
  • 在哪里创建网站南宁网站优化推广
  • 网站如何三合一企业网站的完整性包括哪些
  • 做文案的网站有些什么wordpress竖版图片
  • 百度站长资源平台客户资源网
  • 易进网站建设推广宁波网站建设icp备
  • 酒店预订网站开发最近国内新闻
  • 植物网站模板广东网站备案电话号码
  • 商城网站的psd模板免费下载小程序开发定制平台
  • 电商建站工具威海网站建设哪家好
  • 企业网站管理系统手机版教程网站主题怎么写
  • 西安网站制作培训html5 wap网站
  • 万基城市建设有限公司网站电商网站如何做精细化运营
  • 营销型网站 开源程序科技类网站源码
  • wordpress主题几个网站女装网站建设费用预算
  • 南京网站设计机构找公司做网站要注意什么