李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
Scala栈练习
Leefs
2021-04-26 PM
1176℃
0条
# Scala栈练习 ### 一、概念 详情可参考文章:[数据结构学习--栈(一)](https://lilinchao.com/archives/495.html) > 1. 栈(stack)就像弹夹一样,是先入后出的有序列表 > 2. 栈(stack)是限制线性表中元素的插入和删除`只能在线性表的同一端`进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为`栈顶(Top)`,另一端为固定的一端,称为`栈底(Bottom)`。 > 3. 根据堆栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。 **入栈过程** ![21.Scala栈练习01.png](https://lilinchao.com/usr/uploads/2021/04/3810124443.png) **出栈过程** ![21.Scala栈练习02.png](https://lilinchao.com/usr/uploads/2021/04/1251618369.png) ### 二、数组模拟栈 **代码** **object** ```scala import scala.io.StdIn object ArrayStackDemo01 { def main(args: Array[String]): Unit = { //测试栈的基本使用 val arrayStack = new ArrayStackDemo(3) var key = "" while (true) { println("list:表示显示栈的数据") println("exit:表示退出程序") println("push:表示将数据压栈") println("pop:表示将数据弹栈") key = StdIn.readLine() key match { case "list" => arrayStack.list() case "exit" => System.exit(0) case "push" => { print("请输入一个数据(Int类型):") val n = StdIn.readInt() arrayStack.push(n) } case "pop" => arrayStack.pop() case default => println("输入格式错误,请重新输入!") } } } } ``` **class** ```scala class ArrayStackDemo(size:Int) { //栈的大小 val maxSize =size var stack = new Array[Int](maxSize) //栈顶初始化为-1 var top = -1 //判断是否栈满 def isFull(): Boolean ={ top == maxSize - 1 } //判断是否栈空 def isEmpty():Boolean = { top == -1 } /** * 数据压栈: * 1.判断数组是否满 * 2.将栈顶指针向上移动一位 * 3.将数据存入数组中 */ def push(value:Int):Unit = { if(isFull()){ println("栈中元素已满,不能在存入栈中") return } top +=1 stack(top) = value } /** * 数据弹出栈: * 1.判断数组是否为空 * 2.取出栈顶数据 * 3.将栈顶指针向下移动一位 * 4.返回取出的值 */ def pop():Any = { if(isEmpty()){ println("栈中元素为空!") return } val value = stack(top) top -= 1 printf("value:%d",value) println() return value } /** * 遍历栈,从栈顶向下逐个取出数据 * 对数组进行反向遍历reverse */ def list():Unit = { if(isEmpty()){ println("栈中元素为空!") return } for(i <- 0 to top reverse){ printf("stack[%d]=%d\n",i,stack(i)) } } } ```
标签:
数据结构
,
Scala
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/1240.html
上一篇
Scala单向链表练习
下一篇
一、Stream流概念介绍
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
Tomcat
MyBatisX
微服务
数据结构和算法
Kafka
Golang
ajax
MyBatis
BurpSuite
序列化和反序列化
DataX
Python
Spring
Shiro
并发线程
Docker
JavaSE
ClickHouse
gorm
Spark SQL
Yarn
查找
Http
链表
HDFS
JavaWeb
Java编程思想
Spark Core
Spark Streaming
Map
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞