Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Double ended queue

[es] :: C/C++ programiranje :: C/C++ za početnike :: Double ended queue

[ Pregleda: 1273 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Double ended queue13.12.2008. u 13:57 - pre 186 meseci
Moze li pomoc kako da ovaj program (klasu) prepravim da radi i za red sa dva kraja (znaci da moze i da se upisuje i da se brise i na kraju i na pocetku)
Code:
#ifndef QUEUE_LINK_HPP_INCLUDED
#define QUEUE_LINK_HPP_INCLUDED

#include "list.hpp"

template <class T>
class LinkedQueue;

template <class T>
void printOut(const LinkedQueue<T> &);

template <class T>
class LinkedQueue:protected List<T>
{
    public:
        LinkedQueue(){}
        bool readFromQueue(T&) const;
        void removeFromQueue() {List<T>::remove(1);}
        void addToQueue(const T &El) {List<T>::add(List<T>::size()+1,El);}
        bool empty() const {return List<T>::empty();}
        int size() const {return List<T>::size();}
        friend void printOut<>(const LinkedQueue<T> &);
        virtual ~LinkedQueue(){}
};

template <class T>
void printOut(const LinkedQueue<T> &l)
{
    cout<<endl;
    cout<<"\tVelicina reda: "<<l.size()<<endl;
    cout<<"\tSadrzaj reda je: ";
    T retVal;
    for(int i=1; i<=l.size();i++)
    {
        if(i>1) cout<<", ";
        l.read(i,retVal);
        cout<<retVal;
    }

    cout<<endl<<endl;
}

template <class T>
bool LinkedQueue<T>::readFromQueue(T& retVal) const 
{
    return List<T>::read(1,retVal);
}
#endif // QUEUE_LINK_HPP_INCLUDED

Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

zivotus
Novi Sad

Član broj: 69550
Poruke: 56
*.dynamic.sbb.rs.



Profil

icon Re: Double ended queue13.12.2008. u 14:00 - pre 186 meseci
Pa dodaj samo jes dve metode...

Dakle neces imati
Code:
void removeFromQueue() {List<T>::remove(1);}
        
                        void addToQueue(const T &El) {List<T>::add(List<T>::size()+1,El);}


nego napravis ;
Code:

  int  size()const {return List<T>::size();}
  void remove(int i) {List<T>::remove(i);}
  void brisanjeSaKraja() {List<T>::remove(size());}

  void dodavanjeNaKraj(const T &podatak) {add(size()+1,podatak);}

 void brisanjeSaPocetka()  {remove(1);}
 void dodavanjeNaPocetak(const T &podatak) {add(1,podatak);}

[Ovu poruku je menjao zivotus dana 13.12.2008. u 16:20 GMT+1]

[Ovu poruku je menjao zivotus dana 13.12.2008. u 16:22 GMT+1]
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Re: Double ended queue13.12.2008. u 23:44 - pre 186 meseci
Hvala!
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Re: Double ended queue14.12.2008. u 19:26 - pre 186 meseci
Jos nesto me zanima:
Kako da na osnovu klase gore "class LinkedQueue" dodam funkciju za preklapanje operatora << ?

Nesto ovako:
Code:
friend ostream& operator<<(ostream &out,const LinkedQueue<T> &)

Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Double ended queue

[ Pregleda: 1273 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.