#include<iostream>
#include<cctype>
#include<string>
#include<cstdlib>
#include"Palindrome.h"
using namespace std;
struct Node
{
string pharse;
Node* next;
};
int main()
{
Stack S1;
Queue Q1;
string word;
int length;
cout << "Do you know what a Palindrome is?\n";
cout << "It is a word that is the same spelling backwards and forward\n";
cout << "Enter in a word ";
getline(cin, word);
//cout.flush();
length = word.length();
string NewWord1[length];
string NewWord2[length];
for(int c =0; c < length; c++)
{
NewWord1[c] = word[c];
NewWord2[c] = word[c];
}
for(int c =0; c < length; c++)
{
cout << NewWord1[c];
cout << endl;
cout << NewWord2[c];
cout << endl;
}
cout << "end";
S1.push(NewWord1, length);
Q1.enqueue(NewWord2, length);
Node temp2 = S1.pop();
Node temp3 = Q1.dequeue();
if(temp2 == temp3)
cout << "They are palindrome.";
else
cout << "They are not palindrome.";
/*S1.pop();*/
return 0;
}
void Stack :: push(string NewWord1[], int size)
{
//cout << NewWord1[0];
if(!isFull())
{
for(int i = 0; i < size; i++)
{
Node *temp = new Node;
temp -> pharse = NewWord1[i];
temp -> next = head1;
head1 = temp;
}
}
}
// pop和enqueue返回一个节点,这是我的结构。
答案 0 :(得分:2)
由于Nodes
是对象,因此必须为该类重载operator==
才能利用该语法。请显示Node
的类声明,以便我们可以帮助您实现它(它可能与比较两个节点的数据成员一样简单)。定义将是
bool Node::operator==(const Node & other) const
{
return this->phrase == other.phrase;
}
请参阅Vink的帖子,因为这不是问题的根源。您需要字符串而不是字符串数组,并且需要将字符推入堆栈。
答案 1 :(得分:1)
这甚至可以编译吗?
NewWord1和NewWord2是字符串数组,而不是字符串。
节点是否包含字符,字符串或字符串数组?
答案 2 :(得分:0)
我的猜测是Node
没有定义bool operator==(Node const&) const
。