数据结构与算法之Stack(栈)——in dart
用dart 语言实现一个简单的stack(栈)。栈的内部用List实现。
class Stack<E> {
final List<E> _stack;
final int capacity;
int _top;
Stack(this.capacity)
: _top = -1,
_stack = List<E>(capacity);
bool get isEmpty => _top == -1;
bool get isFull => _top == capacity - 1;
int get size => _top + 1;
void push(E e) {
if (isFull) throw StackOverFlowException;
_stack[++_top] = e;
}
E pop() {
if (isEmpty) throw StackEmptyException;
return _stack[_top--];
}
E get top {
if (isEmpty) throw StackEmptyException;
return _stack[_top];
}
}
class StackOverFlowException implements Exception {
const StackOverFlowException();
String toString() => 'StackOverFlowException';
}
class StackEmptyException implements Exception {
const StackEmptyException();
String toString() => 'StackEmptyException';
}
void main() {
var stack = Stack<int>(10);
for (var i = 0; i < stack.capacity; i++) stack.push(i * i);
print(stack.top);
var sbuff = StringBuffer();
while (!stack.isEmpty) sbuff.write('${stack.pop()} ');
print(sbuff.toString());
}
数据结构与算法之Stack(栈)——in dart的更多相关文章
- 数据结构与算法之Stack(栈)的应用——用stack实现一个计算器-/bin/calc.dart
计算器的bin/calc.dart 可执行代码: import 'dart:io'; import 'package:data_struct/stack/sample/calculator.dart' ...
- 数据结构与算法JavaScript (一) 栈
序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...
- javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例
栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...
- 每周一练 之 数据结构与算法(Stack)
最近公司内部在开始做前端技术的技术分享,每周一个主题的 每周一练,以基础知识为主,感觉挺棒的,跟着团队的大佬们学习和复习一些知识,新人也可以多学习一些知识,也把团队内部学习氛围营造起来. 我接下来会开 ...
- PHP 程序员学数据结构与算法之《栈》
“要成高手,必练此功”. 要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...
- JavaScript 数据结构与算法之美 - 栈内存与堆内存 、浅拷贝与深拷贝
前言 想写好前端,先练好内功. 栈内存与堆内存 .浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScri ...
- 数据结构与算法之Stack(栈)的应用——in dart
参考教科书上的一个应用例子,用栈来分析一行输入中的括号brackets是否匹配.用stdin读取用户输入,并输出检查结果.exit 退出. 注意这行代码: import 'stack.dart';// ...
- 数据结构与算法之Stack(栈)——重新实现
之前发过一篇stack的实现,是采用dart内置的List类并固定长度数组实现的.这里重新实现一版,重复利用List类内置特性和方法.实现更为简洁. class Stack<E> { fi ...
- java数据结构和算法02(栈)
什么叫做栈(Stack)呢?这里的栈和jvm的java栈可不是一个东西... 栈作为一种数据结构,我感觉栈就类似一种接口,实现的话有很多种,比如用数组.集合.链表都可以实现栈的功能,栈最大的特点就是先 ...
随机推荐
- Excel工资表
- December 22nd 2016 Week 52nd Thursday
The best hearts are always the bravest. 心灵最高尚的人,往往也是最勇敢的人. Keep conscience clear, don't let too many ...
- nginx+lvs+keepalived安装
安装nginx 配置文件和之前的一样 user nobody nobody; #定义Nginx运行的用户和用户组 worker_processes 4; #nginx进程数,建议设置为等于 ...
- Python条件判断if、for、while
if条件判断 if 条件判断: 逻辑操作...... ...... 判断字符串是否为空 if a.strip(): #表示字符串不为空 pass 判断是否为字典 d = dict(a=1) if is ...
- video设置视频的播放位置(本例中实现效果是视频第一次播放完成后,接下来中从视频的中间部位开始循环播放)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【[HNOI2010]弹飞绵羊】
发现好像写了一个洛谷上最快的分块 这道题曾经一度感觉非常不可做,因为\(LCT\)的标签以及没有什么思路的分块 但是自从\(yy\)出来一个错误的哈希冲突分块之后(修改的时候挂掉了),就发现这道题不就 ...
- apache、nginx实现反向代理
一.apache(不推荐): 代理80端口:a. 配置:b. 效果:c. 配置文件参考: ServerRoot "/etc/httpd" Listen 80 ProxyPass / ...
- 【PHP】mysql_insert_id() 函数
mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0. ...
- 【bbs】login.php
require的路径 整体结构的复用 渐变效果的加入 按钮:实现背景透明,文字不透明:在background-color中使用rgba,标准浏览器中,背景透明,文字不透明background-colo ...
- Python 多线程 start()和run()方法的区别(三)
上一篇文章最后只是简单介绍了start()方法和run()方法,这篇文章再详细地看下start()和run()的区别. 在实例调用的函数中加入打印当前线程的名字,分别用start()方法和run()方 ...