任意输入一个字符串,试判断其是否对称。 【基本要求】 要求字符串从键盘上随机输入,并且字符串以链式方式存储,实现时,用c++数据结构的队列实现
时间: 2024-11-13 10:26:15 浏览: 19
在C++中,要判断一个字符串是否对称,可以利用队列的数据结构,按照以下步骤操作:
1. 首先,将字符串的首尾字符依次放入队列中。
2. 然后,逐个比较队列头部和尾部的字符是否相等。如果相等,则继续比较下一个字符;如果不等,则说明字符串不对称,直接返回false。
3. 当队列只剩下一个元素或者为空时,说明所有字符都已比较过,字符串是对称的。
以下是一个简单的C++函数示例,实现了这个过程:
```cpp
#include <iostream>
#include <queue>
#include <string>
bool isPalindrome(const std::string& str) {
std::queue<char> queue;
// 将首尾字符依次入队
for (int i = 0; i < str.size(); ++i) {
if (i < str.size() / 2) {
queue.push(str[i]);
} else if (i > str.size() / 2) {
// 对于超出一半长度的情况,需要翻转比较
queue.push(str[str.size() - i - 1]);
}
}
// 比较队列里的字符直到队列为空
while (!queue.empty()) {
if (queue.front() != queue.back()) {
return false;
}
queue.pop();
}
return true;
}
int main() {
std::string input;
std::cout << "请输入一个字符串:";
std::cin >> input;
if (isPalindrome(input)) {
std::cout << "该字符串是对称的。\n";
} else {
std::cout << "该字符串不是对称的。\n";
}
return 0;
}
```
阅读全文