Tarjan中栈的分析与SLT栈的实现
时间:2022-05-10
本文章向大家介绍Tarjan中栈的分析与SLT栈的实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先看一下手写的栈:
1 do{
2 printf("%d ",stack[index]);
3 visit[stack[index]]=0;
4 index--;
5 }while(x!=stack[index+1]);//出栈,并且输出。
6 printf("n");
我们可以发现。x是与index的上一个元素比较的
举个例子
栈:1 3 2 4 5 x=2
这样的话会输出 5 4 2
但是stl不支持和栈顶的上一个元素比较,因为上一个元素一定是被pop掉的。
那么我们可以怎么实现呢?
1.首先我们需要明白一点,如果我们把循环的条件改为
1 x!=stack.top;
那么当栈已经空的时候,还是会执行一下判断操作,这样就会导致re,
所以我们可以记录下pop之前的元素,这样就可以保证在判断的时候不会越界,而且是与pop之前的元素进行比较的
code:
1 int h;
2 do
3 {
4 h=s.top();
5 if(!color[s.top()])
6 color[s.top()]=colornum;
7 vis[s.top()]=0;
8 s.pop();
9 }while(now!=h);
2.一般的do while语句都可以用while语句来实现
我们如果单纯的把do while改成while,
那么在上面的例子中会输出 5 4
所以我们还需要判断一次,把当前的栈顶给输出
代码:
1 while(now!=s.top())
2 {
3 if(!color[s.top()])
4 color[s.top()]=colornum;
5 vis[s.top()]=0;
6 s.pop();
7 }
8 if(!color[s.top()])
9 color[s.top()]=colornum;
10 vis[s.top()]=0;
11 s.pop();
如果你还有其他什么写法的话欢迎发表评论或者通过其他方式联系我。
谢谢
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android自定义View验证码输入框
- PHP生成随机字符串实例代码(字母+数字)
- Laravel框架中缓存的使用方法分析
- android实现搜索功能并将搜索结果保存到SQLite中(实例代码)
- Android实现全局右滑返回
- Android实现打地鼠小游戏
- android实现手机传感器调用
- Android实现接近传感器
- PHP 模拟登陆功能实例详解
- PHP判断一个变量是否为整数、正整数的方法示例
- android实现打地鼠游戏
- Yii框架连表查询操作示例
- Android studio listview实现列表数据显示 数据循环显示效果
- 关于Curl在Swoole协程中的解决方案详析
- Flutter随机迷宫生成和解迷宫小游戏功能的源码