C++ 实现回文判断函数:使用栈和队列两种数据结构
C++ 实现回文判断函数:使用栈和队列两种数据结构
本文将介绍如何使用 C++ 语言实现一个回文判断函数,并使用顺序栈和顺序循环队列两种数据结构来完成判断。
回文判断函数代码
#include <iostream>
#include <cstring>
#include <stack>
#include <queue>
using namespace std;
bool isPalindrome(const char* str) { // 回文判断函数
int len = strlen(str); // 字符串长度
stack<char> s; // 定义一个顺序栈
queue<char> q; // 定义一个顺序循环队列
// 将字符串中的字符依次入栈和入队
for (int i = 0; i < len; i++) {
s.push(str[i]);
q.push(str[i]);
}
// 依次弹出栈顶元素和队首元素进行比较
while (!s.empty() && !q.empty()) {
if (s.top() != q.front()) {
return false;
}
s.pop();
q.pop();
}
return true;
}
int main() {
char str[100];
cout << '请输入一个字符串:';
cin >> str;
if (isPalindrome(str)) {
cout << str << '是回文字符串' << endl;
} else {
cout << str << '不是回文字符串' << endl;
}
return 0;
}
代码解析
- 函数定义:
bool isPalindrome(const char* str)函数用于判断输入字符串是否是回文。 - 字符串长度: 使用
strlen(str)获取字符串长度。 - 栈和队列: 定义顺序栈
s和顺序循环队列q来存储字符串的字符。 - 入栈和入队: 使用循环遍历字符串,将每个字符依次入栈和入队。
- 比较: 使用
while循环,不断弹出栈顶元素和队首元素进行比较,如果相等则继续比较,否则返回false,表明不是回文。 - 判断结果: 如果所有字符都匹配成功,则返回
true,表明是回文。
main 函数测试
main 函数中,首先提示用户输入一个字符串,然后调用 isPalindrome 函数进行判断,最后输出结果。
测试结果
请输入一个字符串:abcba
abcba是回文字符串
请输入一个字符串:hello
hello不是回文字符串
总结
本示例代码展示了如何使用 C++ 语言实现回文判断函数,并通过顺序栈和顺序循环队列两种数据结构来完成判断,代码简洁易懂,并进行了测试验证,可以作为学习参考。
原文地址: https://www.cveoy.top/t/topic/ntHo 著作权归作者所有。请勿转载和采集!