我如何修改我的C 程序以显示用户输入的单词,并使用堆栈向后
How can I modifiy my c++ program to show a word inputted by a user, backwards using a stack?
我想为用户输入的每个字符分配一个指针。然后,我可能可以使用循环存储字符,并使用指针重新排列堆栈顺序。但是我不知道如何以程序形式编写它,我不确定它是否可以使用。这是我到目前为止所拥有的:
#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 PUSHn";
return;
}
else {
arr[ ++top ] = n;
cout << "Just pushed " << n << endl;
return;}
}
int pop() {
if (isEmpty() ) {
cerr << "tEmpty Stack. Don't Popnn";
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 << "tt" << 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;
}
堆栈,其本质(最后,首先)将逆转您投入的任何内容的顺序。字符串" 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 = ' ';
while (c != '.') {
c = std::cin.get();
st.push(c);
}
while (not st.empty()) {
std::cout << st.top();
st.pop();
}
std::cout << 'n';
}
示例输入和输出:
你好世界。.dlrow olleh
,除非必须使用堆栈是必须的(即它是家庭作业),否则您可能会使用getline()
,它的参数 delim
(cf getline),然后在数组上进行反向循环。它会更快,更干净,更不容易出现错误,基本上是两层。
相关文章:
- 3-3. 编写一个程序来计算每个不同单词在其输入中出现的次数
- 输出返回编号。等于输入字符串的单词的字符串数
- 如何使用运算符>>在自定义字符串中输入多个单词?
- 在C++中使用哪个函数来输入多个单词,比如C中的fgets
- 输入一个字符串并将其除以单词
- 如何在函数中输入数字以输出单词?
- C++:如果用户输入数字将其转换为单词,并且如果按回车键程序应退出,则使用开关大小写
- 如何输入每个单词在字符串数组中的句子,直到用户按Enter键
- 从文件 (C++) 输入两个单词字符串
- 在一行中输入具有其他输入类型的多个单词字符串
- 如何识别输入的输入字符串在 c++ 中是两个还是多个单词
- 如何将文件复制到另一个文件中,但是用用户输入的单词替换单词
- 如何从包含多个句子的输入文件中表达单个单词.C
- 从输入的句子中构建单词列表
- 根据输入文本对单词进行排序,具体取决于重复多少次
- C 输入多个单词要字符串
- 用输入中给出的单词填充字符串
- 我如何修改我的C 程序以显示用户输入的单词,并使用堆栈向后
- 编写代码将给定的数字转换为单词(例如1234作为输入应输出一千二百三十四)
- 正则表达式在开头单独匹配单词,或者在输入结束时通过不重复字符串附加到某些内容但附加到某些内容