kolejka w implementacji tablicowej

0

Mam następujące elementy kolejki:
int kolejka [10]={0,2,3,5,2,3,1,8,7,7}
int pocz=8;
int koniec=3;
Przedstawić stan kolejki po wykonaniu:
-wstaw(7);
-usun();
-wstaw(2);
-wstaw(1);

Czyli jak dobrze rozumiem początek to 7, a koniec to 5.
wstawiajac 7, otrzymuje {0,2,3,7,2,3,1,8,7,7}
teraz początek mam dalej w 7, a koniec w drugiej 2?
usuwam z początku czyli początek przesuwam na drugą siódemkę.
teraz wstawiam 2 na koniec i otrzymuje {0,2,3,7,2,3,1,8,7,7}
i po wstawieniu 1 {0,2,3,7,2,1,1,8,7,7} gdzie początkiem jest 7,a końcem druga jedynka?

0

Bez opisu co to jest ta kolejka i co dokładnie robią poszczególne operacje to ciężko powiedzieć.

0

< code >
#include <iostream>
#include <cstdlib>

const int MAX = 5;

using namespace std;

class kolejka {
int poczatek;
int koniec;
int tab[MAX];

public:
kolejka();
int pusta();
void wstaw(int);
void usun();
int zwroc();
};

kolejka::kolejka()
{
poczatek = koniec = 0;
}

int kolejka::pusta()
{
if (poczatek ==koniec)
return 1;
else
return 0;
}

void kolejka::wstaw(int x)
{
if ((koniec + 1) % MAX != poczatek) {
tab[koniec] = x;
koniec = (koniec + 1) % MAX;
}
}
void kolejka::usun()
{
int p;
if (pusta() == 0)
p = poczatek;
poczatek = (poczatek + 1) % MAX;
}

int kolejka::zwroc()
{
return tab[poczatek];
}

int main()
{
kolejka K;
K.wstaw(7);
K.wstaw(0);
K.wstaw(2);
K.wstaw(3);
cout << K.zwroc() << endl;
K.usun();
system("PAUSE");
}

 <\code>
0
if (poczatek = koniec)

Porówanie to ==, nie =. Poza tym używaj bool i zwróc true/false.

Co robi zmienna p w usun()?

0

Wskazuje na początek. Ogólnie to wstawiamy element na koniec kolejki, a usuwamy z początku.

0

Ta metoda raczej powinna wygląda mniej więcej tak:

void kolejka::usun()
{
    if (pusta())
       return;
    poczatek = (poczatek + 1) % MAX;
}

Poza tym powinna raczej zwracać element usuwany. Taka jest idea kolejki zazwyczaj. Właściwie to element wyjmujesz z kolejki, a nie usuwasz ;)

Czyli jak dobrze rozumiem początek to 7, a koniec to 5.
wstawiajac 7, otrzymuje {0,2,3,7,2,3,1,8,7,7}
teraz początek mam dalej w 7, a koniec w drugiej 2?
usuwam z początku czyli początek przesuwam na drugą siódemkę.
teraz wstawiam 2 na koniec i otrzymuje {0,2,3,7,2,3,1,8,7,7}
i po wstawieniu 1 {0,2,3,7,2,1,1,8,7,7} gdzie początkiem jest 7,a końcem druga jedynka?

Jeżeli jest takie założenie, że koniec wskazuje na element za kolejką to tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1