Перегрузка операторов сравнения для стеков

Мне нужна помощь: меня попросили перегрузить операторы сравнения 2 стеков. У меня есть синтаксис, я просто не могу написать определение. Поэтому, пожалуйста, помогите мне.

Хотя бы одному оператору перегрузить и тогда я сделаю это для остальных.

struct linklist
{
    int no;
    struct linklist *next;
};

class Stack
{
private:
    linklist *list,*head;

public://constructor and destructor
    Stack();
    ~Stack();
public:// main functions
    void push();
    void show();
    void pop();

public://overloaded operations

    friend bool operator == (const Stack &stack1, const Stack &stack2);
    friend bool operator != (const Stack &stack1, const Stack &stack2);
    friend bool operator < (const Stack &stack1, const Stack &stack2);
    friend bool operator > (const Stack &stack1, const Stack &stack2);

};

1 ответ

Это действительно зависит от того, что вы действительно хотите сравнить. Это идентичность стеков или просто количество элементов в стеках? Поскольку вы хотите определить меньшие и большие операторы, я предполагаю, что вы хотите сравнить количество элементов в стеках.

Оператор равенства будет выглядеть так:

bool operator==( const Stack &stack1, const Stack &stack2)
{
  return stack1.list->no == stack2.list->no;
}

Конечно, вам нужно рассмотреть случаи, когда член списка объекта Stack имеет значение NULL.

Другие вопросы по тегам