在比较具有相同内容

时间:2016-09-21 15:28:49

标签: c# boolean queue

我试图弄清楚如何创建一个比较两个队列内容的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方法。

1 个答案:

答案 0 :(得分:1)

首先,您应该更新方法参数,以便它实际接受2个队列对象。

其次,检查他们的计数是否不同,如果是,则返回false。我假设如果您要比较两个空队列,那么您会遇到异常情况(或者返回true) - 由您决定。

第三,根据您收到的队列作为输入创建2个新队列。在主while循环中,由于您知道两个队列的大小必须相同,因此可以使用Pop()并比较新队列中的每个值。如果有任何不等,只需return false;,而不是返回一些保存的布尔。