Ive spent about 5 hours trying to put this together and I get nothing for my effort. Maybe Im just a beginner who shouldnt be in this class. Can anyone help me on getting this queue project to work.And if you dont want to help do you know where i can learn more about queues . THanx.
Here is the code:

#include <stdio.h>
#include <stdlib.h>
#include "queues.h"

/*Que ADT type definition*/

typedef struct node
{
void *dataPtr;
struct node *next;
} QUEUE_NODE;

typedef struct
{
QUEUE_NODE *front;
QUEUE_NODE *rear;
int count;
} QUEUE;

/*prototype declarations*/
QUEUE *createQueue (void);
QUEUE *destroyQueue (QUEUE *queue);

int dequeue (QUEUE *queue, void **itemPtr);
int enqueue (QUEUE *queue, void *itemPtr);
int queueFront (QUEUE *queue, void **itemPtr);
int queueRear (QUEUE *queue, void **itemPtr);
int queueCount (QUEUE *queue);

int emptyQueue (QUEUE *queue);
int fullQueue (QUEUE *queue);

/*End of Queue ADT defintions*/

int main (void)
{
char letter;

printf("Choose a function to perform\n"
"A. Enqueue data into queue\n"
"B. Dequeu and print data\n"
"C. Print data at the front\n"
"D. Print data at the rear\n"
"E. Print entire queue\n"
"F. Print queue status: Empty\n"
"G. Print queue status: Full\n"
"H. Print number of element in queue\n"
"I. Destroy queue and quit\n");
scanf("%c",&letter);



switch(letter)
{
case 'A'rintf("Enqueue data into queue\n");break;
case 'B'rintf("Dequeu and print data\n");break;
case 'C'rintf("Print data at the front\n");break;
case 'D'rintf("Print data at the rear\n");break;
case 'E'rintf("Print entire queue\n");break;
case 'F'rintf("Print queue status: Empty\n");break;
case 'G'rintf("Print queue status: Full\n");break;
case 'H'rintf("Print number of element in queue\n");break;
case 'I'rintf("Destroy queue and quit\n");break;
defaultrintf("bad choice\n");
}

return 0;
}
/*createQueue*/
QUEUE *creatQueue (void)
{
QUEUE *queue;

queue = (QUEUE *) malloc (sizeof (QUEUE));
if (queue)
{
queue->front = NULL;
queue->rear = NULL;
queue->count = 0;
}
return queue;
}
/*creatQueue*/

/*enqueue*/
int enqueue (QUEUE *queue, void *itemPtr)
{
QUEUE_NODE *newPtr;

if (!(newPtr = (QUEUE_NODE *)malloc(sizeof(QUEUE_NODE))))
return 0;
newPtr->dataPtr = itemPtr;
newPtr->next = NULL;

if (queue->count ==0)
queue->front = newPtr;
else
queue->rear->next = newPtr;

(queue->count)++;
queue->rear = newPtr;
return 1;
}
/*enqueue*/

/*dequeue*/
int dequeue (QUEUE *queue, void **itemPtr)
{
QUEUE_NODE *deleteLoc;

if (!queue->count)
return 0;
*itmePtr = 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 1;
}
/*dequeue*/

/*queueFront*/
int queueFront (QUEUE *queue, void **itemPtr)
{
if(!queue->count)
return 0;
else
{
*itemPtr = queue->front->dataPtr;
return 1;
}
}
/*queueFront*/

/*queueRear*/
int queueRear (QUEUE *queue, void **itemPtr)
{
if(!queue->count)
return 0;
else
{
*itemPtr = queue->rear->dataPtr;
return 1;
}
}
/*queueRear*/

/*emptyqueue*/
int emptyQueue (QUEUE *queue)
{
return (queue->count == 0);
}
/*emptyqueue*/

/*fullQueue*/
int fullQueue (QUEUE *queue)
{
QUEUE_NODE *temp;

if ( (temp = (QUEUE_NODE *)malloc (sizeof (QUEUE_NODE))) )
{
free(temp);
return 0;
}

return 1;
}
/*fullQueue*/

/*queueCount*/
int queueCount ( QUEUE *queue)
{
return queue->count;
}
/*queueCount*/

/*destroyQueue*/
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;
}
/*destroyQueue*/