C++程序 使用栈翻转字符串
栈是一种后进先出(LIFO)的数据结构,用于维护元素的添加和删除顺序。使用栈可以轻松地实现字符串的翻转操作。本文将向您展示如何使用C++编写栈翻转字符串程序。
什么是栈?
栈是一种基本的数据结构, 它遵循后进先出的原则 (LIFO),其中最后加入的元素首先被提取。栈的两个主要操作是push (入栈) 和 pop (出栈)。当一个元素被添加到栈中时,它被称为pushed。当一个元素从栈中被删除时,它被称为popped。
如何使用栈翻转字符串?
使用栈翻转字符串时,我们将读取字符串的每个字符,并将其pushed到栈中,然后再将它们从栈中pop出来以得到反向字符串。我们可以使用C++的标准库<
以下是用栈翻转字符串的C++程序。请注意,我们使用了C++的标准库<
#include <iostream>
#include <stack>
#include <string>
using namespace std;
string reverseString(string s) {
stack<char> stk;
int n = s.size();
for (int i = 0; i < n; i++) {
stk.push(s[i]);
}
for (int i = 0; i < n; i++) {
s[i] = stk.top();
stk.pop();
}
return s;
}
int main() {
string s = "hello world";
cout << reverseString(s) << endl;
return 0;
}
以上程序输出的结果应该是”dlrow olleh”。
在此程序中,我们使用了两个循环。首先,我们将字符串中的所有字符push到栈中。然后,我们将字符串的每个位置替换为栈顶的元素并将其从栈中pop。这使我们可以得到翻转后的字符串。
总结
在本文中,我们学习了如何使用C++中的栈来翻转字符串。通过使用栈,我们可以轻松地将字符串翻转。假如我们使用字符串并使用以下函数来翻转它:
reverse(s.begin(), s.end());
这个函数可以很轻松地完成字符串的翻转,但是使用堆栈来翻转字符串是对栈基本操作的一种很好的应用。