c++ odejmowanie kolejek

profesorq
Użytkownik
Użytkownik
Posty: 384
Rejestracja: 12 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: wawa
Podziękował: 77 razy
Pomógł: 1 raz

c++ odejmowanie kolejek

Post autor: profesorq »

witam
mam taka metode odejmowanie kolejek priorytetowych i zrobilem ja tak jak jest ponizej ale cos nei spelnia moich oczekiwan, nie wiem czy to jest spowodowane ta metoda czy konstruktorem kopiujacym moglby ktos sprawdzic czy breaki dobrze dzialaja w tej metodzie (ew.ponizej konstruktor kopiuajcy)

Kod: Zaznacz cały

template<class Type>//odejmowanie dwoch kolejek 
Kolejka<Type> Kolejka<Type>::operator-(const Kolejka<Type>& rv)const{
       if(head==NULL) return *this;
       if(rv.head==NULL) return *this;
       
       Kolejka<Type> r((akt_wielkosc)/sizeof(Element<Type>));
       Element<Type>* wsk=rv.head;
       Element<Type>* wsk_this=head;
   while(wsk_this!=NULL)
   {
      while(wsk!=NULL)
      {                   
         if(wsk->data==wsk_this->data)break;           //Jak element wystepuje na dwoch listach to nie dodawaj do r
         if(wsk->next==NULL){                          //Jesli element nie wystepuje w rv 
         if(wsk->data!=wsk_this->data)
         {r+=wsk_this->data;                           //Dodaj element jesli nie wystepuje na liscie rv 
         break;                                        //i nie ma juz wiecej elementow w tej liscie
         }}
         wsk=wsk->next;
      }
      wsk_this=wsk_this->next;
      wsk=rv.head;
   }
return r;
}

ew konstruktor kopiujacy

Kod: Zaznacz cały

template <class Type>
Kolejka<Type>::Kolejka(const Kolejka<Type>& wzorzec){
   size_max=wzorzec.size_max;     //Nowa kolejka priorytetowa ma ten sam rozmiar co kolejka p., z ktorej kopiujemy
   akt_wielkosc=0;                //Nowa kolejka jeszcze nie zawiera zadnego elementu
                                            
   Element<Type>* wsk_pom=wzorzec.head;                                            
   while(wsk_pom!=NULL)                                         //Kopiowanie elementow ze "starej" kolejki p. do nowej
   {  
      Element<Type>* wsk=new Element<Type>;                    //Przydzielenie pamieci dla elementu kolejki p.
      assert(wsk!=NULL); 
      if (head!=NULL)current->next=wsk;                        //Ustawienie wskaznika ostaniego elementu na nowy element                
      else head=current=wsk;                                   //Jesli lista pusta, to obydwa wskazniki wskazuja to samo
      current=wsk;                                             //Current wskazuje teraz na nowo dodany element
      wsk->data=wsk_pom->data;                                 //Przypisanie danych
      akt_wielkosc+=sizeof(Element<Type>);                       //Zwiekszenie aktualnego rozmiaru listy 
      
      wsk_pom=wsk_pom->next;
   }
                                                                                                                                     
}
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

c++ odejmowanie kolejek

Post autor: kadiii »

Co to jest odejmowanie dwóch kolejek, mógłbyś tak w paru słowach, łatwiej będzie rozmawiać o zadaniu.
profesorq
Użytkownik
Użytkownik
Posty: 384
Rejestracja: 12 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: wawa
Podziękował: 77 razy
Pomógł: 1 raz

c++ odejmowanie kolejek

Post autor: profesorq »

mam kolejka A i kolejke B
A=14567
B=36917
A-B=45
B-A=39
ODPOWIEDZ