Не совсем понятно задание, так как оно многовариантно, вот один из них:
#include <iostream>
using namespace std;
struct slistelem
{
char data;
slistelem* next;
};
class slist
{
slistelem* h;
public:
slist(): h(0) { }
~slist() { release(); }
void prepend(char c);
void del();
slistelem* first() const { return h; }
void print() const;
void release();
bool operator==(slist& x);
};
bool slist::operator==(slist& x)
{
if(&x)
{
if(h==x.h) return true;
else
if(h&&x.h)
{
if(h->data==x.h->data) return true;
else return false;
}
else return false;
}
}
void slist::prepend(char c)
{
slistelem* temp= new slistelem;
temp->next=h; temp->data=c; h=temp;
}
void slist::del()
{
slistelem* temp=h; h=h->next;
delete temp;
}
void slist::print() const
{
slistelem* temp=h;
cout << "{";
while(temp) cout << temp->data,temp=temp->next;
cout << "}" << endl;
}
void slist::release()
{
while(h) del();
}
int main()
{
slist* p=NULL;
{
slist w;
w.print();
if(p) { p->print(); if(w==*p) cout << "Равны\n"; else cout << "Не равны\n"; } else cout << "Второй объект отсутствует! \n";
w.prepend('A');
w.prepend('B');
w.print();
if(p) { p->print(); if(w==*p) cout << "Равны\n"; else cout << "Не равны\n"; } else cout << "Второй объект отсутствует! \n";
w.del();
w.print();
p=&w;
if(p) { p->print(); if(w==*p) cout << "Равны\n"; else cout << "Не равны\n"; } else cout << "Второй объект отсутствует! \n";
slist z;
w.print();
z.print();
if(w==z) cout << "Равны\n"; else cout << "Не равны\n";
z.prepend('A');
w.print();
z.print();
if(w==z) cout << "Равны\n"; else cout << "Не равны\n";
z.prepend('R');
w.prepend('R');
w.print();
z.print();
if(w==z) cout << "Равны\n"; else cout << "Не равны\n";
z.del();
z.prepend('T');
w.print();
z.print();
if(w==z) cout << "Равны\n"; else cout << "Не равны\n";
z.prepend('Q');
w.prepend('Q');
w.print();
z.print();
if(w==z) cout << "Равны\n"; else cout << "Не равны\n";
}
}
Другие языки программирования и технологии
с++. нужно для списков из библиотеки шаблонов перегрузить оператор==. делаю как в классах - хрен. подскажите, что-нибудь
Андрей Никишин
в классе перегрузить не проблема, совершенно. а мне нужно именно в структуре
Похожие вопросы
- Алгоритмы стандартной библиотеки шаблонов. Вектора в C++.
- [C++] Зачем делают указатель на класс?
- Программирование С++. Лабу нужно написать, а я не очень смекаю, что делать с буквами.
- С++. Как запихнуть класс-шаблон бинарной кучи в библиотеку?
- C++ :Разработать пользовательскую библиотеку для работы с односвязным списком (использовать динамическую память).
- Нужно оценить Flash шаблон?
- Подскажите шаблон сайта
- Ребята, кто-нибудь подскажет, где взять шаблоны для учебника, рабочих листов в формате doc? Делаю учебник в ворде.
- Здравствуйте, подскажите почему в 1с 8.3, демонстрационная версия шаблона, кардинально отличается от других шаблонов ?
- Что нужно знать что бы понимать с++? Там постоянно нужно подключать библиотеки. Мне не понятно откуда компилятор берет