【问题标题】:Assign values of a stack to another stack将堆栈的值分配给另一个堆栈
【发布时间】:2012-02-15 10:54:22
【问题描述】:

我正在完成这项任务。

我需要创建一个临时堆栈而不对其进行初始化。

然后使用while 循环将堆栈 1 的项目推入这个临时堆栈。

然后我需要使用另一个(嵌套?)循环遍历临时堆栈并将临时堆栈中的项目添加到堆栈 2。

然后我需要设置堆栈 1 和 2 相等,以便堆栈 2 保持不变。

【问题讨论】:

  • 什么是linkedStackType?为什么不能直接复制?您已经在复制到 tmpStack。
  • 我需要修改这个问题。
  • linkedstacktype 是构造函数
  • 数据之前已添加到堆栈中
  • 我需要将项目复制到临时堆栈。然后我需要创建一个遍历临时堆栈并将项目添加到堆栈 2 的循环。这就是分配。在书中我看到它说如何复制堆栈。但这不是我应该做的吗?

标签: c++ copy stack


【解决方案1】:

你的界面看起来有点不对劲。让我们从那里开始,看看这是否能让你克服困难。

stack.top() 通常会偷看一个项目,但不会删除它。这对于从一个堆栈转移到花药似乎没有用。您已经有 isEmptyStack() 来检查顶部元素是否存在。

stack.pop() 通常从堆栈中取出顶部的项目。这听起来对转移很有用。

stack.push(item) 将项目放在堆栈的顶部。这听起来对转移很有用。

stack.push() 似乎是错误的。推什么?

希望,一旦您实施了这些方法,其余的将从您提供的问题的英文描述开始变得有意义。

更新:这就是你想要的:

|a  |   |     |   |   |     |   |   |     |   |c  |
|b  |   |     |b  |   |     |   |b  |     |   |b  |
|c  |   |     |c  |a  |     |c  |a  |     |   |a  |
1   tmp 2     1   tmp 2     1   tmp 2     1   tmp 2

|   |   |     |   |   |     |   |   |a
|   |b  |     |   |   |b    |   |   |b
|   |a  |c    |   |a  |c    |   |   |c
1   tmp 2     1   tmp 2     1   tmp 2 

现在,只有 push、pop 和 IsEmptyStack,没有相互分配堆栈(这有点违背分配的目的),你能做到吗?

【讨论】:

  • 模板 void transferStack(linkedStackType& stack1, linkedStackType& stack2) { 类型项目; linkedStackType tmpStack = stack1; while (stack1.isEmptyStack() == false) { item = stack1.top(); stack1.push(项目); } tmpStack = stack1; while (stack1.isEmptyStack() == false) { item = stack1.top(); stack2.push(item); } stack1 = stack2;
  • @OurFamilyPage:你没有。随时通过代码发布更新您的问题,也许用“更新:...”行来解释。
  • @OurFamilyPage: top() 是删除最上面的项目还是只是偷看它?如果只是偷看,评论中的代码将无限循环。如果它删除了顶部的项目,为什么不调用它 pop(),这是每个程序员在处理堆栈时都会学习的东西?
  • top() 偷看它,pop() 删除它。
  • 这很有帮助!让我回去改一下。
猜你喜欢
  • 2013-12-26
  • 2021-06-21
  • 2022-10-17
  • 1970-01-01
  • 2019-04-26
  • 2019-08-08
  • 2011-10-09
  • 2012-06-26
  • 2011-10-06
相关资源
最近更新 更多