Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
16.04.2013
Размер:
2.85 Кб
Скачать
#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&&current2)
 {
  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();



}
Соседние файлы в папке сделанные