我试图弄清楚如何创建一个比较两个队列内容的Equals方法。 这是我的代码:
public OurQueue(int capacity = 10)
{
myArray = new T[capacity];
}
private void Increment(ref int value)
{
if (++value == myArray.Length)
value = 0;
}
public bool Equals(T item)
{
OurQueue<T> Q1 = new OurQueue<T>();
OurQueue<T> Q2 = new OurQueue<T>();
bool itemEqual = false;
if (IsEmpty() == true)
throw new ApplicationException("Can't compare empty queues");
while (Q1.Count() != 0 && Q2.Count() != 0)
{
if (Q1.myArray[mFront].Equals(Q2.myArray[mFront]))
{
itemEqual = true;
Q1.Increment(ref mFront);
Q2.Increment(ref mFront);
}
else
return itemEqual = false;
}
return itemEqual;
}
关于我哪里出错的想法?
已编辑:已按要求添加了OurQueue和Increment方法。
答案 0 :(得分:1)
首先,您应该更新方法参数,以便它实际接受2个队列对象。
其次,检查他们的计数是否不同,如果是,则返回false。我假设如果您要比较两个空队列,那么您会遇到异常情况(或者返回true) - 由您决定。
第三,根据您收到的队列作为输入创建2个新队列。在主while循环中,由于您知道两个队列的大小必须相同,因此可以使用Pop()并比较新队列中的每个值。如果有任何不等,只需return false;
,而不是返回一些保存的布尔。