出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,...
分类:
其他好文 时间:
2014-05-27 00:33:08
阅读次数:
445
二叉树非递归访问,借助一个栈,来模拟递归调用过程。struct TreeNode { char
val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL),
right(NULL...
分类:
其他好文 时间:
2014-05-26 22:25:25
阅读次数:
353
---恢复内容开始---后缀表达式--->中缀表达式①.读到操作数,立刻放到输出中②.读到操作符,入栈,左括号也入栈③.读到右括号,依次出栈直到左括号(括号不输出)④.读到优先级低的操作符,原栈中操作符依次出栈,直到更低优先级,然后新的操作符入栈(保证栈中元素优先级
高-->低)中缀 a+b*c+(...
分类:
其他好文 时间:
2014-05-26 22:23:52
阅读次数:
296
深度搜索应用之黑白图像(非递归)前言: 使用深度搜索,有两个方法:递归,栈。本质是栈。
递归有一个缺陷,栈溢出。栈有一个缺陷,程序相对递归更复杂。练习题:
输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连...
分类:
其他好文 时间:
2014-05-26 21:53:21
阅读次数:
344
本文转载自Netprawn,原文英文版地址尽管在.net
framework中我们不太需要关注内存管理和垃圾回收这方面的问题,但是出于提高我们应用程序性能的目的,在我们的脑子里还是需要有这方面的意识。明白内存管理的基本行为将有助于我们解释我们程序中变量是如何操作的。在本文中我将讨论栈和堆的一些基本知...
分类:
其他好文 时间:
2014-05-26 14:49:38
阅读次数:
224
#include "STC12C5A.H"
#define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C
初始10ms
#define MAX_TASKS 2 //任务槽最大个数.
unsigned char idata task_stack[MAX_TASKS][2];//任务堆栈. PC指针为16位,需2个字节task_st...
分类:
编程语言 时间:
2014-05-23 00:03:19
阅读次数:
341
题意:
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。
要求函数min、push 以及pop 的时间复杂度都是O(1)。
思路:定义两个栈,一个用来记录数据的插入和删除,一个用来存储最小值的变化
代码如下:
template
class Stack
{
public:
Stack(int len=100);
T Min();
...
分类:
其他好文 时间:
2014-05-22 23:46:32
阅读次数:
359
表达式求值
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。
比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)
输入第一行输入一个整数n,共有n组测试数...
分类:
其他好文 时间:
2014-05-22 23:30:26
阅读次数:
327
在DAG中DFS中顶点的出栈顺序即逆拓扑序。
def topological_sort( graph ):
is_visit = dict( ( node, False ) for node in graph )
li = []
def dfs( graph, start_node ):
for end_node in...
分类:
编程语言 时间:
2014-05-22 23:12:10
阅读次数:
487