首页 > 其他分享 >go 链表栈

go 链表栈

时间:2023-07-29 22:22:05浏览次数:36  
标签:node LinkStack linkStack 链表 link go root size

package main

import "fmt"

//链表栈
type LinkStack struct {
root *LinkNode //栈顶
size int //栈的元素数量
}

//栈中的结点
type LinkNode struct {
data int
next *LinkNode
}

func NewLinkStack() *LinkStack {
return &LinkStack{root: nil, size: 0}
}

//入栈
func (link *LinkStack) pushLinkStack(v int) {
//如果栈是空的
if link.root == nil {
node := new(LinkNode)
node.data = v
link.root = node
} else {
//栈不是空的,栈顶是链表头结点,栈底是链表尾结点,入栈的元素为新的头结点,并指向原来的结点
pre := link.root
node := new(LinkNode)
node.data = v
node.next = pre
link.root = node

}
link.size++
}

//出栈 栈顶的元素弹出
func (link *LinkStack) popLinkStack() int {
if link.size == 0 {
panic("empty")
}
top := link.root
v := top.data
link.root = top.next
link.size--
return v
}

//展示栈
func (link *LinkStack) showLinkStack() {
if link.root == nil {
return
}
head := link.root
fmt.Printf("-------------- \n")
for head != nil {
fmt.Printf("栈的元素展示 %v \n", head.data)
head = head.next
}
fmt.Printf("-------------- \n")
}

//栈的大小
func (link *LinkStack) lenLinkStack() int {
fmt.Printf("link 长度 %v", link.size)
return link.size
}

//栈是否为空
func (link *LinkStack) IsEmpty() bool {
return link.size == 0
}

func main() {
linkStack := NewLinkStack()
linkStack.pushLinkStack(12)
linkStack.pushLinkStack(13)
linkStack.showLinkStack()
linkStack.pushLinkStack(17)
linkStack.lenLinkStack()
linkStack.showLinkStack()
linkStack.popLinkStack()
linkStack.showLinkStack()
}

标签:node,LinkStack,linkStack,链表,link,go,root,size
From: https://www.cnblogs.com/zxqblogrecord/p/17590675.html

相关文章

  • go cobra执行命令
    /*[email protected],Version2.0(the"License");youmaynotusethisfileexceptincompliancewiththeLicense.YoumayobtainacopyoftheLicenseathttp://www.apache.org/licenses/LICENSE-2......
  • Go语言中init函数执行的顺序
    init函数的执行规则:对于同一个go文件,init函数的执行顺序从上到下,即在代码中先出现的init函数会先执行。对于同一个package,不同文件是按照文件名字符串比较的结果决定执行顺序的,字符串越小的文件越早被初始化。对于不同的package,如果不相互依赖,则按照import的顺......
  • [代码随想录]Day04-链表part02
    题目:24.两两交换链表中的节点思路:首先给他加一个虚拟头结点,然后思考反转的逻辑,这是每两个为一组,比如1,2是一组、3,4是一组,如果说1,2一组2,3一组就变成了链表的逆转了。那么指针的逻辑是:两个指针一个r指向要交换的二元组的第一个节点一个l指向前一个节点二元组的第二个节......
  • django(路由层)
    一、简介#路由匹配url(r'test',views.test),url(r'test_add',views.test_add)#r'test'与请求头的数据进行正则匹配'''url方法第一个参数是正则表达式只要第一个参数正则表达式能够匹配到内容,那么就会立刻停止往下匹配直接执行对应的视图函数在输入url的......
  • 【Go blog】Govulncheck v1.0.0 发布了!
    我们很高兴地宣布,govulncheckv1.0.0已经发布,同时也发布了用于集成扫描到其他工具的API的v1.0.0版本!Go对漏洞管理的支持首次在去年九月宣布。从那时起,我们做了一些改变,最终在今天发布。这篇文章描述了Go的更新漏洞工具,以及如何开始使用它。我们最近还发布了一个安全最佳实......
  • 如何在 Django 中使用 MVT 创建一个基本项目?
    Django是一种用Python编写的流行Web框架,遵循Model-View-Template(MVT)架构模式。MVT是众所周知的Model-View-Controller(MVC)模式的变体,它提供了一种构建Web应用程序的结构化方法。了解如何在Django中使用MVT创建基本项目是开发健壮且可扩展的Web应用程序的基本步骤。在本......
  • Django web框架实现nacos【多配置】修改
    Djangoweb框架实现nacos【多配置】修改基于上面一个博客进行功能升级优化,在实际场景中一般会有多个配置需要同时进行修改,上章节功能就不足满足使用了,在此基础上进行功能优化同时修改多个配置进行提交表单。1.安装依赖pipinstallnacos-sdk-pythonPyYAML 2.创建类修......
  • Python-Django-环境搭建和基础知识
    Python-Django学习目录:环境搭建和基础知识:包括安装Python和Django、了解Python基础语法、掌握Django框架的基本概念和工作原理等。模型和数据库:包括创建模型、定义字段、使用DjangoORM进行数据库操作等。视图和URL:包括定义视图函数、URL路由配置、模板渲染等。表单和验证:包括表单......
  • Gopan-基于go-zero实现慕课网实战仿百度网盘项目
    Gopan-基于go-zero实现慕课网实战仿百度网盘项目项目地址:https://github.com/liuxianloveqiqi/Gopan......
  • Django web框架实现修改【单个】nacos配置
    Djangoweb框架实现修改【单个】nacos配置基于上一个博客的Django的项目环境继续添加一些高级的功能——修改nacos配置。简单回顾一下,上面添加的功能:博客网站文章上传、发布,rediskey删除接口。1.首先安装PythonNacos客户端库pipinstallnacos-sdk-python 2.创建n......