24.11.2.24012040. Na predavanjima i vježbama je razmotrena statička i dinamička implementacija generičke klase “Stek” koja predstavlja kontejnersku strukturu podataka zasnovanu na LIFO (Last In First Out) principu, kao i tri različite statičke implementacije generičke klase “Red”, koja predstavlja kontejnersku strukturu podataka zasnovanu na FIFO (First In First Out) principu. Realizirajte dinamičku implementaciju generičke klase “Red” (zasnovanu na povezanim čvorovima) koja posjeduje isti interfejs kao i razmotrene statičke implementacije.

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
using namespace std;

template <typename Tip>
class Red {
  struct Cvor {
    Tip element;
    Cvor *veza;
    Cvor(const Tip &element, Cvor *veza) 
      : element(element), veza(veza) {}
  };
  Cvor *pocetak,*prethodni;
  void Unisti();
  Red(const Red &s);
  Red &operator =(const Red &s);
public:
  Red() : pocetak(0) {}
  ~Red(){Unisti();}
  bool Prazan() const { 
    return pocetak==0;
  }
  void Ubaci(const Tip &element);
  Tip Izvadi();
};

template <typename Tip>
void Red<Tip>::Ubaci(const Tip &element) {
  Cvor *novi=new Cvor(element,0);  
  if(pocetak==0) {
    pocetak=novi;
    prethodni=novi;
    }
  else{
    prethodni->veza=novi;
    prethodni=novi;
    }  
}

template <typename Tip>
Tip Red<Tip>::Izvadi() {
  if(Prazan()) throw "Red je prazan!\n";
  Tip element=pocetak->element;
  Cvor *sljedeci=pocetak->veza;
  delete pocetak;
  pocetak=sljedeci;
  return element;
}

template <typename Tip>
void Red<Tip>::Unisti(){
while(!Prazan())Izvadi();
}


int main(){
try{
//Ovdje bi trebalo testirati razvijenu klasu Red...
}
catch(const char a[]){
cout<<a;
}
getch();
return 0;
}

Ispis na ekranu:

Riješeni zadaci 2    Index