//
// strtst3.cpp - test genq3 using str elements
//
#include <iostream.h>
#include "genq3.h"
#include "showheap.h"
#include "str.h"
#define DIM(a) (sizeof(a)/sizeof(a[0]))
void print_str(void *e)
{
cout << " " << *(str *)e;
}
void test()
{
char c;
size_t qn;
str qe;
str *pqe;
void *pv;
genq q[4];
while (cin >> c)
{
showheap();
if (c == 'q')
break;
if (c == 'a')
{
cin >> qn >> qe;
if (qn >= DIM(q))
cout << "no such queue\n";
else
q[qn].append(new str(qe));
}
else if (c == 'c')
{
cin >> qn;
if (qn >= DIM(q))
cout << "no such queue\n";
else
q[qn].clear():
}
else if (c == 'r')
{
cin >> qn;
if (qn >= DIM(q))
cout << "no such queue\n";
else if (q[qn].remove(pv))
{
pqe = (str *)pv;
cout << "removed" << *pqe << '\n';
delete pqe;
}
else
cout << "q[" << qn << "] is empty\n";
}
else
continue;
for (size_t i = 0; i < DIM(q); ++i)
{
cout << i << ':';
q[i].apply(print_str);
cout << "\n";
}
}
}
int main()
{
showheap();
test();
showheap();
return 0;
}
// End of File