Är det någon som kan hjälpa mig med denna uppgift??? Har du gjort någon datastruktur innan? Ska jag vara riktigt ärlig så hajjar jag inte helt och hållet hur det ska fungera. Men jag fattar så mycket att man ska lägga in bokdatan i någon sorts kösystem, men det är just det där med deques som ställer till det för mig för jag har inte susning om vad det är för något. Ok... Japp så långt är jag med helt och hållet. Det är sedan när jag ska översätta det till kod som det blir knasigt. Ok. japp jag är med så långt. Och jag är säker på att vi får använda saker i standardbiblioteket. Om vi då tänker oss din deque som något sånt här (kör med int först): Nu har jag fått lite kött å benen så nu ska jag försöka själv. Tack så mycket för hjälpen.Hjälp med Deques
""Utveckla en klass i C++ för hantering av datastrukturer i form av deques (double-ended queues). En deque är en datastruktur med insättnings- och uttagsmöjligheter i båda ändpunkterna.
Skriv även ett huvudprogram som lagrar bokdata i datastrukturen. För varje bok registreras boktitel, författare, utgivningsår, ISBN-kod och förlag.""
//JohanSv: Hjälp med Deques
Har du hajat hur denna skall fungera?
I så fall är det inte så svårt. För det första behöver du en lista av något slag. (En dubbellänkad lista är nog lämpligt.)
Sen kapslar du in den listan i en Deque-klass, som skall ha minst fyra funktioner: push_front, push_back, pop_front, pop_back.
Behöver du mer hjälp; återkom!Sv: Hjälp med Deques
//Johan ( Tacksam för all hjälp)Sv: Hjälp med Deques
Vet du hur en vanlig queue fungerar?
Det baseras på fifo-teknik, alltså "first in, first out", en vanlig kö.
Det sätt du använder den på är typ
intqueue myq;
myq.push(3);
myq.push(4);
myq.push(5);
myq.pop(); //returnerar 3
myq.pop(); //returnerar 4
myq.pop(); //returnerar 5
myq.pop(); //FEL!
En deque är en kö som du kan sätta in och ta bort ifrån på båda ändar. Har du hajat så långt?Sv: Hjälp med Deques
//JohanSv: Hjälp med Deques
För att kunna ta bort och lägga till lätt brukar man ju ha en länkad lista, men i det här fallet vill du kunna göra det på båda ändar, så du behöver en dubbellänkad lista.
Får du lov att använda en färdig sådan utifrån problemformuleringen?
I så fall är jag ganska säker på att det finns en sån i standardbiblioteket.
Om inte så får du skriva en själv, det räcker med noder.
Hur som helst, utifrån din deque ska du kunna lägga till och ta bort noder från båda håll, så du bör som sagt ha fyra funktioner för det. För att hantera det internt är det rimligt med en pekare till sista noden och en till första.
Är du med så långt?Sv: Hjälp med Deques
Sv: Hjälp med Deques
class deque
{
public:
void push_back(int a);
void push_front(int b);
int pop_front();
int pop_back();
bool empty();
private:
list<int> li;
} ;
Pga att du har en std::list så behöver du inga separata pekare. Du använder dig av
push_back och pop_back, resp. push_front och pop_front. Observera att pop-funktionerna inte returnerar något värde, utan du får använda *begin och *end, för det.
Kommer du igång lite bättre nu?Sv: Hjälp med Deques
//Johan