在我的实现中使用堆栈是否正确?

kdhug886
#include <iostream> / File: int-stack.h /
#include <cstdlib>
using namespace std;
const int BUFFER SIZE = 100;
class int stack
{
private:
int data[BUFFER SIZE]; // Use an array to store data
int top_index; // Start from 0; -1 when empty
public:
int stack(void); // Default constructor
bool empty(void) const; // Check if the stack is empty
bool full(void) const; // Check if the stack is full
int size(void) const; // Give the number of items currently stored
int top(void) const; // Retrieve the value of the top item
void push(int); // Add a new item to the top of the stack
void pop(void); // Remove the top item from the stack
void insert_at_bottom(int_stack& stack, int item); //adds a new item to the bottom of the stack if the stack is not full.
};

鉴于这些函数,我需要实现一个名为 reverse_stack(int_stack& stack) 的函数。这是使用递归的建议解决方案,

void reverse_stack(int_stack& stack)
{
if (stack.empty())
return; 
else
{
int top_item = stack.top();
stack.pop(); 
reverse_stack(stack); 
insert_at_bottom(stack, top_item); 
}
}

我的解决方案是这样的,我想知道它是否正确。

void reverse_stack(int_stack& stack){
  while(stack.empty() == false){
     insert_at_bottom(stack,stack.top());
     stack.pop();
}
萨马拉斯

,它不是。


你的功能:

void reverse_stack(int_stack& stack){
  while(stack.empty() == false){
     insert_at_bottom(stack,stack.top());
     stack.pop();
}

在弹出堆栈之后,您在循环中缺少一个右括号。

我的解决方案是这样的,我想知道它是否正确。

您应该编写一些代码来测试该功能。如果你发现它不起作用,你应该得到一张纸并画出你的代码的作用,这样你就会看到哪里出了问题。

您的函数执行此操作(对于非空堆栈):

---
|1|
---
|2|
---
|3|
---

在底部插入顶部元素:

---
|1|
---
|2|
---
|3|
---
|1|
---

弹出顶部元素:

---
|2|
---
|3|
---
|1|
---

在底部插入顶部元素:

---
|2|
---
|3|
---
|1|
---
|2|
---

弹出顶部元素:

---
|3|
---
|1|
---
|2|
---

在底部插入顶部元素:

---
|3|
---
|1|
---
|2|
---
|3|
---

弹出工具元素:

---
|1|
---
|2|
---
|3|
---

就在这个时候,你的函数肯定知道错了!您的堆栈与调用该函数之前完全相同!

顺便问一下,你的函数什么时候终止?正如现在写的那样,它将运行一个无限循环

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我是否在使用类并正确实现功能?

来自分类Dev

在Java中使用数组实现堆栈

来自分类Dev

在Java中使用数组实现堆栈

来自分类Dev

我在异步函数中使用Promises是否正确?

来自分类Dev

我是否正确实现了 Square 函数?

来自分类Dev

如何在Java中使用HashMap实现堆栈?

来自分类Dev

我想在我的应用程序中使用 NavigationView 但我找不到正确的依赖来实现 androidX

来自分类Dev

我是否正确使用ghcjs?

来自分类Dev

我是否正确使用静态?

来自分类Dev

我是否正确使用useRef?

来自分类Dev

我是否正确使用marionettejs?

来自分类Dev

我是否正确使用FragmentPagerAdapter?

来自分类Dev

我是否正确使用“ zypper”?

来自分类Dev

我是否正确使用状态?

来自分类Dev

我使用 getCreatedTime() 是否正确?

来自分类Dev

我是否以正确的方式使用 .then() ?

来自分类Dev

是否可以仅使用lambda表达式实现堆栈?

来自分类Dev

是否可以仅使用lambda表达式实现堆栈?

来自分类Dev

在堆栈跟踪中使用正确的行号抛出异常

来自分类Dev

使用数组实现堆栈

来自分类Dev

我是否以正确的方式在注意力模型中使用tf.math.reduce_sum?

来自分类Dev

我在子查询 MySQL 的 Where 子句中使用 NOT IN 和 IF 是否正确?

来自分类Dev

我是否正确实现了SCD类型1和7

来自分类Dev

我的欧拉方法实现是否正确?

来自分类Dev

在F#中使用StringBuilder是否正确?

来自分类Dev

我可以在图灵机中使用堆栈吗?

来自分类Dev

在堆栈中使用HSpec

来自分类Dev

在PositionedTransition中使用堆栈

来自分类Dev

在Python中使用堆栈