涉及堆栈(数据结构)的挑战性问题

时间:2011-08-26 04:31:52

标签: algorithm data-structures stack

有谁知道我在哪里可以获得许多涉及使用堆栈的具有挑战性的编程问题?我想用超级难题挑战自己。

5 个答案:

答案 0 :(得分:5)

我最喜欢的

  1. 使用堆栈
  2. 将前缀表达式转换为Postfix
  3. 使用O(1)实现堆栈以访问max element
  4. 没有实施河内的塔 递归。 :)
  5. 采取任何该死的递归程序,这是由直觉递归的,并尝试迭代地实现它。每个递归都有一个迭代解决方案。 这应该会让你忙一阵子。 :)

    顺便说一句, 为什么不用langsam / tennenbaum购买/借用“使用C和C ++的数据结构”?

    你一周会遇到足够的问题。 :)

答案 1 :(得分:1)

Google搜索堆栈数据结构问题会产生许多有趣的内容。以下是一些有趣的内容(根据我的判断,从更容易到更难):

  1. 检查文本中的平衡括号,大括号和其他成对分隔符。

  2. 写一个后缀计算器。 (所以1 3 2 4 + * -应该计算1 - (3 *(2 + 4))。)

  3. 使用堆栈解决“N皇后”问题。 (将N个皇后放在一个N×N棋盘上,这样就不会有两个皇后在同一行,列或对角线上。)

答案 2 :(得分:0)

破解编码面试,第四版:150编程面试问题和解决方案: http://www.amazon.com/Cracking-Coding-Interview-Fourth-Programming/dp/145157827X

第3章专门讨论堆栈和队列问题。以下是一个示例问题:

  

你如何设计一个堆栈,除了push和pop之外,还有一个函数min,它返回最小元素?推,弹和最小都应该在O(1)时间内运行。

答案 3 :(得分:0)

转到图书馆,查看有关数据结构的教科书。它们应该被搁置在一起,因此您可以随时找到当前教科书的电话号码,其他人就在附近。

我希望大多数人都会专门讨论堆栈的章节,以及章末问题。会有很多重叠,但你应该能够很好地选择各种难度的问题,以及对标准问题的一系列不同解释。

答案 4 :(得分:0)

您可以学习基于堆栈的语言,如Forth,或堆栈虚拟机,如MS的CIL VM。任何一个都会强迫你重新考虑如何实现你在其中编写的任何内容来使用堆栈。