/* --- Function: void enqueue_node(Queue que) --- */ void enqueue_node(Queue que) { int tmp, *pi; char mess[BUFSIZ]; do { my_clearscrn(); printf("--- ENQUEUE NODE TO QUEUE ---\n"); printf("\nCurrent queue status(%d nodes): ", QUEUEsize(que)); SLISTtraverse(que, print, SLIST_FWD); tmp = read_int("\nEnter integer data of node to be enqueued (-1=Quit): ", 0, 0); if (tmp == -1) break; pi = (int *)malloc(sizeof(int)); MALCHK(pi); *pi = tmp; if ((QUEUEenqueue(que, pi)) != OK) { printf("\nFatal error enqueing data - exiting...!"); QUEUEdestroy(que); exit(-1); } else { sprintf(mess, "Node %d will be enqueued!", *pi); prompt_and_pause(mess); } } while (TRUE); }
/* --- void queue_elements(Queue que, int nr_of_ele) --- */ void queue_elements(Queue que, int nr_of_ele) { int i=0, *pi, retval; do { pi = (int *)malloc(sizeof(int)); *pi = my_random(1,50); retval = QUEUEenqueue(que, pi); assert(retval == OK); } while (++i < nr_of_ele); printf("\nCurrent queue content(%d elements): ", QUEUEsize(que)); /* This call to SLISTtraverse is possible - although this function is NOT a member of the queue (public) interface - but because a queue is also a list ! */ SLISTtraverse(que, print, SLIST_FWD); }
/* --- Function: void queue_nodess(Queue que, Stack stk, int nr_of_ele) --- */ void enqueue_push_nodes(Queue que, Stack stk, int nr_of_ele) { int i=0, *pi, retval; my_clearscrn(); printf("--- CREATING QUEUE AND STACK (%d nodes each), RANDOM INTEGER DATA ---\n", NR_OF_ITEMS); do { /* Create dyn. memory, store random nr - and enqueue... */ pi = (int *)malloc(sizeof(int)); MALCHK(pi); *pi = rand_int(1,50); retval = QUEUEenqueue(que, pi); assert(retval == OK); /* Create dyn. memory, store random nr - and push... */ pi = (int *)malloc(sizeof(int)); MALCHK(pi); *pi = rand_int(1,50); retval = STACKpush(stk, pi); assert(retval == OK); } while (++i < nr_of_ele); printf("\nCurrent queue and stack status: "); printf("\nQueue(%d nodes): ", QUEUEsize(que)); SLISTtraverse(que, print, SLIST_FWD); printf("\nStack(%d nodes): ", STACKsize(stk)); SLISTtraverse(stk, print, SLIST_FWD); prompt_and_pause("\n\n"); }