#include <iostream>
#include <stdexcept>
template <typename T>
class Red{
struct Cvor{
T element;
Cvor *veza;
};
Cvor *celo;
Cvor *zacelje;
void IzbrisiVrh();
public:
Red() : celo(nullptr), zacelje(nullptr){}
~Red(){while(celo != nullptr) IzbrisiVrh();}
void DodajNaZacelje(T x);
void SkiniSaCela() {
if(DaLiJePrazan()) throw std::logic_error("Prazan red");
IzbrisiVrh();
};
T DajCelo() const {
if(DaLiJePrazan()) throw std::logic_error("Prazan red");
return celo->element;};
bool DaLiJePrazan() const{ return celo == nullptr;};
int VelicinaReda() const;
};
template <typename T>
void Red<T>::DodajNaZacelje(T x){
Cvor *novi = new Cvor {x, nullptr};
if(!celo) celo = novi;
else
zacelje->veza = novi;
zacelje = novi;
}
template <typename T>
void Red<T>::IzbrisiVrh(){
Cvor *stari = celo;
celo = celo->veza;
delete stari;
if(celo == nullptr) zacelje = nullptr;
}
template <typename T>
int Red<T>::VelicinaReda()const{
int brojac = 0;
for(auto p = celo; p != nullptr; p = p->veza) brojac ++;
return brojac;
}
int main() {
Red<int> r;
std::cout << "Je li prazan: " << r.DaLiJePrazan() << std::endl;
r.DodajNaZacelje(3);
r.DodajNaZacelje(5);
r.DodajNaZacelje(8);
std::cout << "Velicina: " << r.VelicinaReda() << std::endl;
std::cout << "Celo: " << r.DajCelo() << std::endl;
r.SkiniSaCela();
std::cout << "Nakon skidanja jednog elementa:" << std::endl;
std::cout << "Velicina: " << r.VelicinaReda() << std::endl;
std::cout << "Celo: " << r.DajCelo() << std::endl;
r.SkiniSaCela();
std::cout << "Nakon skidanja drugog elementa:" << std::endl;
std::cout << "Velicina: " << r.VelicinaReda() << std::endl;
std::cout << "Celo: " << r.DajCelo() << std::endl;
r.SkiniSaCela();
std::cout << "Nakon skidanja treceg elementa:" << std::endl;
std::cout << "Velicina: " << r.VelicinaReda() << std::endl;
std::cout << "Je li prazan: " << r.DaLiJePrazan() << std::endl;
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: