首先看一下手写的栈:

 do{
printf("%d ",stack[index]);
visit[stack[index]]=;
index--;
}while(x!=stack[index+]);//出栈,并且输出。
printf("\n");

我们可以发现。x是与index的上一个元素比较的

举个例子

栈:1 3 2 4 5     x=2

这样的话会输出 5  4   2

但是stl不支持和栈顶的上一个元素比较,因为上一个元素一定是被pop掉的。

那么我们可以怎么实现呢?

1.首先我们需要明白一点,如果我们把循环的条件改为

  x!=stack.top; 

那么当栈已经空的时候,还是会执行一下判断操作,这样就会导致re,

所以我们可以记录下pop之前的元素,这样就可以保证在判断的时候不会越界,而且是与pop之前的元素进行比较的

code:

 int h;
do
{
h=s.top();
if(!color[s.top()])
color[s.top()]=colornum;
vis[s.top()]=;
s.pop();
}while(now!=h);

2.一般的do while语句都可以用while语句来实现

我们如果单纯的把do while改成while,

那么在上面的例子中会输出 5  4

所以我们还需要判断一次,把当前的栈顶给输出

代码:

 while(now!=s.top())
{
if(!color[s.top()])
color[s.top()]=colornum;
vis[s.top()]=;
s.pop();
}
if(!color[s.top()])
color[s.top()]=colornum;
vis[s.top()]=;
s.pop();

如果你还有其他什么写法的话欢迎发表评论或者通过其他方式联系我。

谢谢

Tarjan中栈的分析与SLT栈的实现的更多相关文章

  1. linux中oops信息的调试及栈回溯【转】

    本文转载自:http://blog.csdn.net/kangear/article/details/8217329 ========================================= ...

  2. Linux内核--网络栈实现分析(十一)--驱动程序层(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7555870 更多请查看专栏,地 ...

  3. Linux内核--网络栈实现分析(七)--数据包的传递过程(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...

  4. Linux内核--网络栈实现分析(四)--网络层之IP协议(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017 更多请看专栏,地址 ...

  5. Linux内核--网络栈实现分析(二)--数据包的传递过程(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7492423 更多请看专栏,地址 ...

  6. C与Lua互相调用的时候,栈变化分析

    1  C调用Lua函数的堆栈变化 例子 Lua文件中的函数 function testNewCounter2() return "第四个结果" end C中的例子 void t_n ...

  7. Linux内核--网络栈实现分析(二)--数据包的传递过程--转

    转载地址http://blog.csdn.net/yming0221/article/details/7492423 作者:闫明 本文分析基于Linux Kernel 1.2.13 注:标题中的”(上 ...

  8. Java性能分析之线程栈详解与性能分析

    Java性能分析之线程栈详解 Java性能分析迈不过去的一个关键点是线程栈,新的性能班级也讲到了JVM这一块,所以本篇文章对线程栈进行基础知识普及以及如何对线程栈进行性能分析. 基本概念 线程堆栈也称 ...

  9. linux中Oops信息的调试及栈回溯

    Oops 信息来源及格式 Oops 这个单词含义为“惊讶” ,当内核出错时(比如访问非法地址)打印出来的信息被 称为 Oops 信息. Oops 信息包含以下几部分内容. 1 一段文本描述信息. 比如 ...

随机推荐

  1. 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性

    [源码下载] 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性 作者:w ...

  2. HTTP 总结

    一.概念 特性 1. HTTP协议用于客户端和服务端之间的通信 2. 通过请求和响应的交互达成通信 : HTTP协议规定,请求从客户端发出,最后服务器端响应请求并返回,也就是说,肯定是从客户端开始建立 ...

  3. myeclipise生成javadoc

    1.点击项目,右键,选择export: 点击next: 点击next:VM options中输入-encoding UTF-8 -charset UTF-8

  4. 第二十节:详细讲解String和StringBuffer和StringBuilder的使用

    前言 在 Java中的字符串属于对象,那么Java 中提供了 String 类来创建和操作字符串,即是使用对象:因为String类修饰的字符一旦被创建就不可改变,所以当对字符串进行修改的时候,需要使用 ...

  5. JDBC的使用和SQL注入问题

    基本的JDBC使用: package demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...

  6. 初识Telerik for AJAX

    由于项目需要,本人又刚入门.net开发,项目经理介绍了一个.net流行的开发框架telerik.于是我开始慢慢学习了,发现这个控件还是不错的,学习到的内容和初学者一起探讨一下. 1:第一步 什么是te ...

  7. [EXP]phpBB 3.2.3 - Remote Code Execution

    // All greets goes to RIPS Tech // Run this JS on Attachment Settings ACP page var plupload_salt = ' ...

  8. 学习之响应式Web设计---一个实例

    周末闲来无事,做了一个响应式设计的例子.当然,由此并不能窥见响应式设计真谛之一斑.但,对于初次接触响应设计,对于响应式设计的概念依旧模糊不清的同学来说,或许是个启蒙! 闲语暂且不表,进入正题,这里没有 ...

  9. postgres 更新数据表

    新增非空列: alter table t_test add column user_id integer; update t_test set user_id=0; alter table t_tes ...

  10. Jfinal文件上传基础路径问题,windows下会以项目根路径为基础路径

    在本地windows下开发测试文件上传 使用com.jfinal.cos进行multipart/form-data请求数据格式的文件上传解析 import com.jfinal.upload.Uplo ...