gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:31:38 24 4
gpt4 key购买 nike

#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();
}

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

My solution is this, I wanted to know is it correct.

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

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

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

在底部插入顶部元素:

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

弹出顶部元素:

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

在底部插入顶部元素:

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

弹出顶部元素:

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

在底部插入顶部元素:

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

弹出工具元素:

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

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

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

关于c++ - 在我的实现中使用堆栈是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44083646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com