gpt4 book ai didi

C++ - 使用堆栈确定 C 样式字符串是否为回文

转载 作者:行者123 更新时间:2023-11-30 04:05:33 25 4
gpt4 key购买 nike

我正在做类作业。我们获得了 these three classes . (链接在这里,当我试图在不同的行上做它们时,编辑器很生气)。

我们应该接收一个字符串,然后使用这些类来测试它是否是回文。我们无法修改所述类。

这是我的 int main:

#include <iostream>
#include <cstring>
#include <cctype>
#include "stack.h"

using namespace std;

int main () {
char testString[100];
Stack<char> charStack;

cout << "Please enter a string:\n> ";
cin.getline(testString, 100);

char caps;
for (int i = 0; i < strlen(testString); i++) {
if (isalpha(testString[i])) {
caps = toupper(testString[i]);
charStack.push(caps);
}
}

for (int j = 0; j < strlen(testString); j++) {
if (isalpha(testString[j])) {
caps = toupper(testString[j]);
if (charStack.firstPtr->getData() == caps) { // This part is the issue. firstPtr is private in list.h, and I can't figure out another way to compare the char array to the data in the stack
charStack.pop(caps);
}
}
}

if (charStack.isStackEmpty()) {
cout << endl << endl << "\"" << testString << "\" IS a palindrome." << endl;
}
else {
cout << endl << endl << "\"" << testString << "\" is NOT a palindrome." << endl;
}
}

如您所见,我不太明白如何将弹出的数据与 char 数组中的数据进行比较。 Stack类只返回一个boolean,而List类中指向ListNode对象的指针是私有(private)的,所以我不能使用那个类的“getData”函数!谁有任何可以帮助我的提示?

谢谢!

最佳答案

查看函数Stack::pop(STACKTYPE &data)

它采用非常量引用参数,在其中存储要删除的元素(这实际上发生在 List::removeFromFront(NODETYPE &value) 的实现中)。

这意味着您可以将 char 传递给 pop() 函数,之后它将包含您要查找的数据。

关于C++ - 使用堆栈确定 C 样式字符串是否为回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com