gpt4 book ai didi

c++ - 如何反转堆栈

转载 作者:太空狗 更新时间:2023-10-29 23:36:27 28 4
gpt4 key购买 nike

我有一个任务,我想在其中获取一个堆栈,显示输出,然后反转它以显示输出。

它应该是这样的

Stack:
262 115 74 26 34 243 22 734 113 121
Stack Reversed:
121 113 734 22 243 34 26 74 115 262

相反我的是这样出来的

Stack:
262 115 74 26 34 243 22 734 113 121 121 113 734 22 243 34 26 74 115 262
Stack Reversed:

谁能看看我的代码,看看发生了什么。我已经尝试了很多东西,但无法使任何东西起作用。

#include <stdio.h>
#include <iostream>

#include "linkedStack.h"

using namespace std;

template <class Type>
void printStack(linkedStackType<Type>& stack);

template <class Type>
void reverseStack(linkedStackType<Type>& stack);

int main(int argc, char **argv)
{
// Declare stack variables
linkedStackType<int> stack;

// Add some data to the stack
stack.push(121);
stack.push(113);
stack.push(734);
stack.push(22);
stack.push(243);
stack.push(34);
stack.push(26);
stack.push(74);
stack.push(115);
stack.push(262);

cout << "\nStack:\n ";
printStack(stack);

reverseStack(stack);

cout << "\nStack Reversed:\n ";
printStack(stack);

cout << "\n\n** Press any key to continue **\n";
getchar();

return 0;
}

template <class Type>
void printStack(linkedStackType<Type>& stack)
{
Type item;
linkedStackType<Type> tmpStack = stack;

while (stack.isEmptyStack() == false)
{
item = stack.top();
stack.pop();
cout << item << " ";
}

stack = tmpStack;



}

template <class Type>
void reverseStack(linkedStackType<Type>& stack)
{
Type item;
linkedStackType<Type> tmpStack;

while (stack.isEmptyStack() == false)
{
item = stack.top();
stack.pop();
tmpStack.push(item);
}

while (tmpStack.isEmptyStack() == false)
{
item = tmpStack.top();
tmpStack.pop();
stack.push(item);
cout << item;

}

stack = tmpStack;


return;
}

最佳答案

我不是 100%,但我想如果您删除 reverseStack 的第二个 while 循环,您的代码将正常工作。

template <class Type>
void reverseStack(linkedStackType<Type>& stack)
{
Type item;
linkedStackType<Type> tmpStack;

while (stack.isEmptyStack() == false)
{
item = stack.top();
stack.pop();
tmpStack.push(item);
}

//while (tmpStack.isEmptyStack() == false)
//{
// item = tmpStack.top();
// tmpStack.pop();
// stack.push(item);
// cout << item;
//}

stack = tmpStack;
return;
}

关于c++ - 如何反转堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15648313/

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