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

时间:2014-04-23 21:57:43

标签: c++ stack

我正在上课。我们获得了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类只返回一个布尔值,而类List中ListNode对象的指针是私有的,所以我不能使用&#34; getData&#34;那个班的功能!任何人都有任何可以帮助我的提示吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

它需要一个非const引用参数,在该参数中存储要删除的元素(这实际上发生在List::removeFromFront(NODETYPE &value)的实现中)。

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