gpt4 book ai didi

c++ - 如何修改我的 C++ 程序以使用堆栈向后显示用户输入的单词?

转载 作者:行者123 更新时间:2023-11-28 07:52:59 26 4
gpt4 key购买 nike

我想为用户输入的每个字符分配一个指针。然后在这样做时,我可能可以使用一个循环来存储字符,第二个循环使用指针重新排列堆栈顺序。但我不知道如何以程序形式编写它,我不确定它是否可以工作。这是我目前所拥有的:

#include<iostream>

using namespace std;

class Stack{
public:
enum {MaxStack = 50};
void init() {top = -1;}
void push( char n ){
if ( isFull() ) {
cerr << "Full Stack. DON'T PUSH\n";
return;
}
else {
arr[ ++top ] = n;
cout << "Just pushed " << n << endl;
return;}
}
int pop() {
if (isEmpty() ) {
cerr << "\tEmpty Stack. Don't Pop\n\n";
return 1;
}
else
return arr[top--];
}
bool isEmpty() {return top < 0 ? 1 : 0;}
bool isFull() {return top >= MaxStack -1 ? top : 0;}
void dump_stack() {
cout << "The Stack contents, from top to bottom, from a stack dump are: " << endl;
for (int i = top; i >= 0; i--)
cout << "\t\t" << arr[i] << endl;
}
private:
int top;
int arr[MaxStack];
};

int main()
{

Stack a_stack;
int x = 0;
char inputchar;


cout<<"Please enter a word"<<endl;
a_stack.init();

while (inputchar != '.') //terminating char
{
cin >> inputchar;
array[x] = inputchar;
x++;
}

int j = x;

for (int i = 0; i < j; i++)
{
cout << array[x];
x--;
}
a_stack.push();

a_stack.dump_stack();

return 0;
}

最佳答案

堆栈,就其 LIFO 性质(后进先出)而言,将颠倒您放入其中的任何内容的顺序。字符串“Hello”的示例:

(栈顶在左边)

H        push "H"
eH push "e"
leH push "l"
lleH push "l"
olleH push "o"

现在,当您从堆栈中弹出时,您将首先得到“o”,然后是“l”等。它是您放入的任何内容,但顺序相反。你不需要做任何特别的事情来实现它。只需按正常顺序插入堆栈,当你弹出时,它就会反转:

// while loop
{
cin >> inputchar;
a_stack.push(inputchar);
}

// Display in reverse
while (not a_stack.isEmpty()) {
cout << (char)a_stack.pop();
}

这是一个使用 std::stack 的小示例程序:
(这里没有进行输入错误检查。)

#include <iostream>
#include <stack>

int main()
{
std::stack<char> st;
char c = '\0';
while (c != '.') {
c = std::cin.get();
st.push(c);
}

while (not st.empty()) {
std::cout << st.top();
st.pop();
}
std::cout << '\n';
}

示例输入和输出:

Hello world..dlrow olleH

关于c++ - 如何修改我的 C++ 程序以使用堆栈向后显示用户输入的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347873/

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