Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
struct element{
int data;
element *previous;
};
class list{
element *current;
public:
list(void);
list(int size);
list(const list &);
void print();
void add(int number);
void operator + (const list temp);
list operator & (const list temp);
};
list& list::list(const list& original)
{
element *new_element = new element;
element *org_element = new element;
org_element = original.current;
new_element->data = org_element->data;
new_element->previous = NULL;
current = new_element;
org_element = org_element->previous;
while(org_element){
add(org_element->data);
org_element = org_element->previous;
}
}
void list::print()
{
element *to_print = new element;
to_print = current;
while(to_print)
{
cout<<"\nData : "<<to_print->data;
to_print = to_print->previous;
}
delete to_print;
}
void list::add(int data)
{
element *new_element = new element;
new_element->data = data;
new_element->previous = current;
current = new_element;
}
list list::list(void)
{
element *new_element = new element;
new_element->previous = NULL;
new_element->data = 0;
current = new_element;
}
list list::list(int size)
{
element *new_element = new element;
new_element->previous = NULL;
new_element->data = random(50)+1;;
current = new_element;
while(size--) add(random(50)+1);
}
void list::operator + (const list temp)
{
element *to_add = new element;
element *first = new element;
first = to_add = temp.current;
while(to_add->previous)
{
to_add = to_add->previous;
}
to_add->previous = current;
current = first;
}
list list::operator & (const list temp)
{
list new_list;
element *current2 = new element;
current2 = temp.current;
//first elem
new_list.current->data = (current->data>current2->data)? \
current->data:current2->data;
current = current->previous;
current2 = current2->previous;
//formed
while(current&¤t2)
{
new_list.add( (current->data>current2->data)? \
current->data:current2->data );
current = current->previous;
current2 = current2->previous;
}
return new_list;
}
void main()
{
clrscr();
randomize();
cout<<"\nFIRST LIST: \n";
list L(3);
L.print();
cout<<"\nSECOND LIST: \n";
list R(3);
R.print();
cout<<"\n\nLIST-COPY OF SECOND LIST: \N";
list K(R);
K.print();
cout<<"\nAfter concatting : \n";
L+R;
L.print();
cout<<"\n===================================\n";
cout<<"\nFIRST LIST: \n";
list C(3);
C.print();
cout<<"\nSECOND LIST: \n";
list V(3);
V.print();
list G(V);
cout<<"\n\nAfter & : \n";
list Q;
Q = C&G;
Q.print();
}