Thread: What is wrong with my queue ADT?

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Jan 2012
    Posts
    23

    What is wrong with my queue ADT?

    Code:
    #include "queue.h"
    
    QUEUE* CreateQueue(void)
    {
        QUEUE* queue;
    
    
        queue = (QUEUE*)malloc(sizeof(QUEUE));
    
    
        if(queue)
        {
            int count = 0;
            queue->front = NULL;
            queue->rear = NULL;
        }
        else
            return NULL;
        return queue;
    }
    
    
    bool Enqueue(QUEUE* queue, void* dataptr)
    {
        NODE* newnode;
        
        if(!(newnode = (NODE*) malloc(sizeof(NODE))))
            return FALSE;
    
    
        newnode->dataptr = dataptr;
        newnode->next = NULL;
    
    
        if(queue->count == 0)
            queue->front = newnode;
        else
            queue->rear->next = newnode;
        (queue->count)++;
        queue->rear = newnode;
        return TRUE;
    }
    
    
    void* Dequeue (QUEUE* queue)
    {
        void* dataOut;
        NODE* temp;
        
        if(queue->count == 0)
            return NULL;
        dataOut = queue->front->dataptr;
        temp = queue->front;
        queue->front = queue->front->next;
        if(queue->count == 1)
            queue->rear = NULL;
        (queue->count)--;
        free(temp);
        return dataOut;
    }
    
    
    void* QueueFront (QUEUE* queue)
    {
        void* dataOut;
        
        if(queue->count == 0)
            return NULL;
        else
            return queue->front->dataptr;
    }
    
    
    void* QueueRear (QUEUE* queue)
    {
        void* dataOut;
        if(queue->count == 0)
            return NULL;
        else
            return queue->rear->dataptr;
    }
    
    
    bool EmptyQueue (QUEUE* queue)
    {
        return (queue->count == 0);
    }    
    
    
    bool FullQueue (QUEUE* queue)
    {
        NODE* temp;
    
    
        temp = (NODE*)malloc(sizeof(*(queue->rear)));
        if(temp)
        {
            free(temp);
            return FALSE;
        }
        return TRUE;
    }
    
    
    int QueueCount(QUEUE* queue)
    {
        return queue->count;
    }
    
    
    void DestroyQueue(QUEUE* queue)
    {
        NODE* temp;
        if(queue->count != 0)
        {
            while(queue->front != NULL)
            {
                temp = queue->front;
                queue->front = queue->front->next;
                free(temp->dataptr);
                free(temp);
            }
        }
        free(queue);
    }
    So I tried to enqueue something very simple in main as so:
    Code:
    #include "queue.h"
    
    
    int main(void)
    {
        int* a;
        QUEUE* queue;
    
    
        queue = CreateQueue();
        a = (int*)malloc(sizeof(int));
        *a = 1;
        Enqueue(queue, a);
        return 0;
    }
    When I compile, the program crashes and my debugger states that there was an exception at this line:
    Code:
    bool Enqueue(QUEUE* queue, void* dataptr){
        NODE* newnode;
        
        if(!(newnode = (NODE*) malloc(sizeof(NODE))))
            return FALSE;
    
    
        newnode->dataptr = dataptr;
        newnode->next = NULL;
    
    
        if(queue->count == 0)
            queue->front = newnode;
        else
            queue->rear->next = newnode;
        (queue->count)++;
        queue->rear = newnode;
        return TRUE;
    }
    I am using Microsoft visual studio 2010.

    Any help is appreciated!
    Last edited by slee8251; 10-08-2012 at 12:30 PM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. (queue*)this)->queue::qput’ does not have class type
    By brack in forum C++ Programming
    Replies: 13
    Last Post: 11-11-2010, 03:41 PM
  2. whats wrong with this? no errors but wrong result
    By InvariantLoop in forum C Programming
    Replies: 6
    Last Post: 01-28-2005, 12:48 AM
  3. Replies: 9
    Last Post: 07-15-2004, 03:30 PM
  4. queue
    By tiknsemaj in forum C++ Programming
    Replies: 4
    Last Post: 09-25-2002, 04:43 AM
  5. Queue and Priority Queue
    By Pamela in forum C++ Programming
    Replies: 1
    Last Post: 12-07-2001, 11:09 PM