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

Algorithm 涉及堆栈(数据结构)的挑战性问题,algorithm,data-structures,stack,Algorithm,Data Structures,Stack,有人知道我在哪里可以找到很多涉及堆栈使用的具有挑战性的编程问题吗?我想用超难的问题来挑战自己。谷歌搜索堆栈数据结构问题会发现很多有趣的东西。以下是几个有趣的例子(依我看,从容易到难): 检查文本中是否有平衡括号、大括号和其他成对分隔符 写一个后缀计算器。(因此1234+*-应计算1-(3*(2+4))) 使用堆栈解决“N皇后”问题。(将N个皇后放置在N x N棋盘上,使两个皇后不在同一行、列或对角线上。) 破解编码面试,第四版:150个编程面试问题和解决方案: 第3章专门讨论堆栈和队列问题。以

有人知道我在哪里可以找到很多涉及堆栈使用的具有挑战性的编程问题吗?我想用超难的问题来挑战自己。

谷歌搜索堆栈数据结构问题会发现很多有趣的东西。以下是几个有趣的例子(依我看,从容易到难):

  • 检查文本中是否有平衡括号、大括号和其他成对分隔符

  • 写一个后缀计算器。(因此
    1234+*-
    应计算1-(3*(2+4)))

  • 使用堆栈解决“N皇后”问题。(将N个皇后放置在N x N棋盘上,使两个皇后不在同一行、列或对角线上。)


  • 破解编码面试,第四版:150个编程面试问题和解决方案:

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

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


    去图书馆看看关于数据结构的教科书。它们都应该放在一起,这样你就可以找到你当前课本的电话号码,其他的就在附近

    我想大多数都会有专门关于堆栈的章节,有章节结束的问题。会有很多重叠,但您应该能够选择各种难度的问题,以及对标准问题的各种不同解释

    我最喜欢的

  • 使用堆栈将前缀表达式转换为后缀
  • 使用O(1)实现堆栈以访问max元素
  • 无障碍河内塔 递归。:) 拿任何他妈的递归程序来说,直觉是递归的,试着迭代地实现它。每个递归函数都有一个迭代解。 这会让你忙上一段时间

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


    你将得到足够一周的问题。:)

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

    我会查看这本书,但示例问题并不是真正具有挑战性的。它的解决方案几乎是显而易见的——在你推的时候进行比较。@Obinna,这对推很好,但你对流行音乐做什么呢?O(1),记住@Obinna,坦白地说,大多数编程问题都归结为相对简单的解决方案,这在事后看来是显而易见的。如果某事物有解决方案,那么它可能不再被认为是“超硬”的,它的解决方案是显而易见的(如果你对基本概念有了坚实的理解),但是如果它没有解决方案,那么它肯定是“超硬”的,你会发现它的可能性是令人沮丧的!好啊我现在明白了。我还是会买你推荐的书。谢谢。你为什么不购买/借用langsam/tennenbaum的“使用C和C++的数据结构”?你将得到足够的问题一个星期,只为堆栈。:)是朗萨姆、奥根斯坦和特南鲍姆吗?对不起,我忘了奥根斯坦的名字。:)