比较堆栈
Comparing stacks
我有一个项目可以比较两个堆栈的内容,并且我对此功能有问题。我相信我已经完成了其余的计划。我在b.mycharacters.empty(((表达式必须具有类类型(和b == b. mycharacters(没有操作员" =="这些操作数与这些操作匹配(。
bool CharStack::IsEqual(CharStack & B)
{
if (B.empty())
{
cout << "Stack is empty" << endl;
return false;
}
else if (B.myCharacters.empty())
{
cout << "Stack is empty" << endl;
return false;
}
else if (B == B.myCharacters)
return true;
}
任何帮助将不胜感激。
这是标题和驱动程序。他们是由老师为这个项目提供的,即使有更好的方法可以改变它们。
。#include <iostream>
#include <string>
using namespace std;
const int STACK_CAPACITY = 128;
typedef char StackElement;
class CharStack
{
private:
char myCharacters[STACK_CAPACITY]; // STL stack of chars.
int myTop;
public:
CharStack();
bool empty();
void push(const StackElement & value);
StackElement top() const;
void pop();
void StringToStack(const string & inStr);
friend ostream & operator <<(ostream & out, const CharStack & CS);
CharStack Reverse();
bool IsEqual(CharStack & B);
};
驱动程序
#include <string>
#include <cassert>
#include "Header.h"
using namespace std;
//introduces namespace std
int main(void)
{
ifstream in;
string fileName, line[30];
int i = 0;
CharStack N, M, P;
cout << "Enter file name for palindrome check: ";
cin >> fileName;
in.open(fileName.c_str());
assert(in.is_open());
while (!in.eof())
{
getline(in, line[i]);
N.StringToStack(line[i]);
cout << N << endl;
P = N;
M = N.Reverse();
if (P.IsEqual(M))
cout << "This line is a palindrome line" << endl;
else
cout << "This line is not a palindrome line" << endl;
i++;
}
cout << "nProgram ended normally.n";
system("pause");
}
假设您的CharStack
内部将字符保留在std::string
中,即
class CharStack
{
std::string myCharacters; // internal data
public:
bool IsEqual(CharStack const&) const;
/* ... */
};
和 IsEqual()
应该返回,如果两个堆栈相同,则实现就是
bool CharStack::IsEqual(CharStack const&other) const
{
return myCharacters == other.myCharacters;
}
这将一个空的和非空的堆栈比较不等,而是两个空的堆栈相等,这可以说是正确的行为。如果您希望两个空堆栈不等,则可以
bool CharStack::IsEqualNonEmpty(CharStack const&other) const
{
return !myCharacters.empty() && myCharacters == other.myCharacters;
}
请注意,关键字const
的各种用途。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- 如果堆栈在数字较低的地址增长,为什么指针比较会逆转这种情况?
- 比较堆栈数据结构 c++
- 比较堆栈
- 启用优化时的堆栈指针比较异常
- C 比较共享指针的堆栈
- C++ STL 关系运算符如何比较堆栈
- 堆栈的重载比较运算符
- 比较双精度堆栈导致Always Equal
- 确保使用双比较和交换指令,为无锁堆栈
- 比较队列和堆栈的内容