1. Write an interface file for queue ADT of integer using linked list.The interf
ID: 3671125 • Letter: 1
Question
1. Write an interface file for queue ADT of integer using linked list.The interface file must include the following functions:
QueType* CreateQueue (void);
void DestroyQueue (QueType* q);
void Enqueue (QueType* q, intnewItem);
void Dequeue(QueType* q, int* item);
intIsQueueEmpty(QueType* q);
Sample code for these functions for char type can be found in the handout. Note your question is for integer type.
Explanation / Answer
#include #include #include "queue.h" QUEUE* createQueue (void) { QUEUE* queue; queue = (QUEUE*) malloc (sizeof (queue)); if (queue){ queue->front = NULL; queue->rear = NULL; queue->count = 0; } return queue; } bool enqueue (QUEUE* queue, void* itemPtr){ QUEUE_NODE* newPtr; if(!(newPtr = (QUEUE_NODE*)malloc(sizeof(QUEUE_NODE)))) return false; newPtr->dataPtr = itemPtr; newPtr->next = NULL; if (queue->count == 0) queue->front = newPtr; else queue->rear->next = newPtr; (queue->count)++; queue->rear = newPtr; return true; } bool dequeue (QUEUE* queue, void** itemPtr){ QUEUE_NODE* deleteLoc; if (!queue->count) return false; *itemPtr = queue->front->dataPtr; deleteLoc = queue->front; if(queue->count == 1) queue->rear = queue->front = NULL; else queue->front = queue->front->next; (queue->count)--; free (deleteLoc); return true; } bool queueFront (QUEUE* queue, void** itemPtr){ if (!queue->count) return false; else{ *itemPtr = queue->front->dataPtr; return true; } } bool queueRear (QUEUE* queue, void** itemPtr){ if (!queue->count) return true; else{ *itemPtr = queue->rear->dataPtr; return false; } } bool emptyQueue (QUEUE* queue){ return (queue->count == 0); } bool fullQueue(QUEUE* queue){ QUEUE_NODE* temp; temp = (QUEUE_NODE*)malloc(sizeof(*(queue->rear))); if (temp){ free (temp); return true; } return false; } int queueCount(QUEUE* queue){ return queue->count; } QUEUE * destroyQueue (QUEUE* queue){ QUEUE_NODE* deletePtr; if (queue){ while (queue->front != NULL){ free (queue->front->dataPtr); deletePtr = queue->front; queue->front = queue->front->next; free(deletePtr); } free (queue); } return NULL; } main.c #include #include #include "queue.h" int main(){ int number; int *dataPtr; QUEUE* numbers; numbers = createQueue (); printf("Please enter the 10 numbers you want to know the sum and average of. "); for (int i = 0, i < 10; i++){ if (!(dataPtr = (int*) malloc (sizeof (int)))) printf("Overflow trying to fill queues. "), exit(100); system("Pause"); return 0; }Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.