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;
}

代码解析

  1. 函数定义: bool isPalindrome(const char* str) 函数用于判断输入字符串是否是回文。
  2. 字符串长度: 使用 strlen(str) 获取字符串长度。
  3. 栈和队列: 定义顺序栈 s 和顺序循环队列 q 来存储字符串的字符。
  4. 入栈和入队: 使用循环遍历字符串,将每个字符依次入栈和入队。
  5. 比较: 使用 while 循环,不断弹出栈顶元素和队首元素进行比较,如果相等则继续比较,否则返回 false,表明不是回文。
  6. 判断结果: 如果所有字符都匹配成功,则返回 true,表明是回文。

main 函数测试

main 函数中,首先提示用户输入一个字符串,然后调用 isPalindrome 函数进行判断,最后输出结果。

测试结果

请输入一个字符串:abcba
abcba是回文字符串
请输入一个字符串:hello
hello不是回文字符串

总结

本示例代码展示了如何使用 C++ 语言实现回文判断函数,并通过顺序栈和顺序循环队列两种数据结构来完成判断,代码简洁易懂,并进行了测试验证,可以作为学习参考。

C++ 实现回文判断函数:使用栈和队列两种数据结构

原文地址: https://www.cveoy.top/t/topic/ntHo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录