【发布时间】:2010-12-13 20:07:31
【问题描述】:
在运行时我想输入两种数据类型,双精度和字符串。 条件之一是 String 应该按照我输入的顺序弹出,而 double 将按照通常的堆栈行为 LIFO 弹出。另一个条件是堆栈被限制为最大大小 10
例如一个运行时示例
输入 Hello 1 World 2 blah blah 3 4 5
输出 Hello 5 World 4 blah blah 3 2 1
我的第一个问题是有多少种方法可以解决这个问题? 我已经使用 3 个堆栈解决了这个问题,一个存储双精度,一个存储字符串,一个用于反转字符串顺序。
我需要保存模式以便程序知道双打的顺序,因此我将模式保存到字符串堆栈。由于堆栈的大小限制为 10,因此我需要以另一种方式保存模式。
这就是我的字符串堆栈在推送后的样子
- 你好*
- 世界*
- 废话
- 废话***
因此,在第一次读取时,我需要在堆栈位置进行特定读取,然后从中提取 Hello。当我告诉程序下一个 pop 是双精度时,星号 * 留待以后使用。
我的第二个问题是我想知道是否有其他更优雅的解决方案来解决这个问题。因为我的解决方案将涉及一些字符串操作来解决这个问题。至于现在,我实际上并没有在字符串大小写中使用 pop 函数,因为它应该被使用。顺便说一句,我用 C++ 制作了解决方案。
【问题讨论】:
-
通常的堆栈行为,FIFO
-- 不,堆栈是 LIFO,FIFO 被称为“队列”。 -
您必须使用堆栈还是使用其他结构?
-
@imz: 是的,我会编辑它
-
@casablanca:是的,我必须使用堆栈
-
不可能有一个通用的解决方案。当堆栈有 10 个条目,你需要输出一个数字,但最后一个数字还没有到达时,你会怎么做?
标签: algorithm string stack double