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

链表模拟栈

定义节点 

class Node {var num: Int = _var next: Node = _def this(num: Int) {thisthis.num = num}override def toString: String = s"num=[${this.num}]"
}

定义方法

class LinkStack {private var head = new Node(0)def getHead: Node = head//判断是否为空def isEmpty: Boolean = {head.next == null}//无需判断是否为满//查看当前链表def list(): Unit = {if (isEmpty) {println(s"栈已空")return}var temp = head.nextwhile (temp.next != null) {println(s"${temp}")temp = temp.nextThread.sleep(500)}}//入栈def push(value: Int): Unit = {if (isEmpty) head.next = new Node(1)//使用头插法val newNode = new Node(value)newNode.next = head.nexthead.next = newNode}//出栈def pop(): Int = {if (isEmpty) throw new RuntimeException("栈空")val temp = head.nextif (temp.next != null) {println(s"弹栈=>${temp.num}")head = temp.next} else {println(s"弹栈=>${temp.num}")}temp.num}
}

主函数

package Algotithmobject LinkedListStackDemo {def main(args: Array[String]): Unit = {val stack = new LinkStackstack.push(1)stack.push(3)println(s"原链表=====")stack.list()println(s"弹栈一次=====")stack.pop()stack.list()println(s"弹栈二次=====")stack.pop()stack.list()}}

结果 

总结

1、入栈时使用头插法,将新节点插入在 head头节点后面

2、 pop出栈 时需要对当前链表进行非空判定。如果取出后节点为空,则不需要对 head.next 进行赋值

http://www.lryc.cn/news/151325.html

相关文章:

  • MySQL基础篇:数据库概述和部署
  • 大数据面试题:MapReduce压缩方式
  • 【ICer的脚本练习】“精通各种语言的hello world!“
  • 解决npm install报错: No module named gyp
  • Leetcode 面试题 17.01 不用加号的加法
  • 一个 MySQL 数据库死锁的案例和解决方案
  • AMBEO 双声道空间音频现已迈进直播制作领域
  • 在VSCode上画UML的三个插件
  • Springboot - 1.什么是springboot
  • 学习微信小程序 Westore
  • CentOS上使用Docker安装和部署kkFileView
  • Level-based Foraging 多智能体游戏仿真环境
  • LeetCode-53-最大子数组和-贪心算法
  • 解决gitee仓库中 .git 文件夹过大的问题
  • uniapp 开发小程序,封装一个方法,让图片使用线上地址
  • Android 12 源码分析 —— 应用层 三(SystemUIFactory及其Dependency解析)
  • 考前冲刺上岸浙工商MBA的备考经验分享
  • XmlDocument.SelectNodes 不起作用
  • 部署单点elasticsearch
  • ElementUI浅尝辄止16:Tag 标签
  • Java虚拟机(JVM)框架
  • 配置Publisher 的编译规则
  • 【SpringBoot】接口实现:SpringBoot实现博客系统的文章列表页接口代码
  • 如何使用SQL系列 之 如何在SQL中插入数据
  • 【LeetCode题目详解】1281题 整数的各位积和之差 面试题 01.01. 判定字符是否唯一 python题解(作业一二)
  • 1.12 进程注入ShellCode套接字
  • MySQL 日志系统
  • LeetCode刷题---Two Sum(一)
  • 算法通关村第十七关——插入区间
  • Jenkins java8安装版本安装