Witam.
Podlacze sie bo nie ma sensu zakladac nowy watek.
Zrobilem stosy i dziala zalicza mi ale nie wiem co robie zle ze mi nie zalicza kolejek. Dla testow przykladowych daje dobre wyniki. Jak ktos moze zerknac.
#include <stdio.h>
#include <string.h>
int kol[10][10]; //kolejka
int tab1[10],tab2[10]; //konrtola poczatek - koniec kolejki
void dk(int a,int b) // dodaj do kolejki
{
if(tab1[a] == 10)
{
printf("error: queue is full\n");
return;
}
kol[a][tab1[a]]=b;
tab1[a]++;
}
int uk(int a) // usun z kolejki
{
if(tab1[a] == tab2[a])
{
printf("error: queue is empty\n");
return 0;
}
tab2[a]++;
return kol[a][tab2[a]-1];
}
void del(int a) //kasuj kolejke
{
tab1[a]=tab2[a]=0; //ustaw poczatek - koniec na 0
}
void pri(int a) //wyswietl kolejke
{
int i;
if(tab1[a] == tab2[a])
{
printf("empty\n");
return;
}
for(i=tab1[a]-1;i>=tab2[a];i--) //wyswietle kolejke od ostatniego dodanego
printf("%d",kol[a][i]);
putchar('\n');
}
int main(void)
{
int a,b;
char nap[20];
while(scanf("%s",nap) != EOF)
{
if(!strcmp(nap,"new_q"))
{
scanf("%d",&a);
}
else
if(!strcmp(nap,"enqueue"))
{
scanf("%d %d",&a,&b);
dk(a,b);
}
else
if(!strcmp(nap,"dequeue"))
{
scanf("%d",&a);
uk(a);
}
else
if(!strcmp(nap,"delete_q"))
{
scanf("%d",&a);
del(a);
}
else
if(!strcmp(nap,"print_q"))
{
scanf("%d",&a);
pri(a);
}
}
return 0;
}
Z gory dzieki.
Pozdr.