/* queuetest.c implement a queue using 2 stacks */ #include #include #include #include #include #include "stack.h" stackT st1; stackT st2; void enqueue(int element){ StackPush(&st1, element); } int dequeue(){ if (StackIsEmpty(&st2)) { if (StackIsEmpty(&st1)){ fprintf(stderr, "queue is empty\n"); return(1); } else { while (! StackIsEmpty(&st1)) { StackPush(&st2, StackPop(&st1)); } } } return StackPop(&st2); } int main(int argc, char **argv){ debugflag = true; int stacksize = 10; StackInit(&st1, stacksize); StackInit(&st2, stacksize); int val; for (int i=1; i < argc; i++) { val = strtod(argv[i], NULL); if (val > 0) { enqueue(val); } else { dequeue(); } StackPrint(&st1); StackPrint(&st2); } return(0); }