Tuesday, November 5, 2013

Design a Queue using Linked List


Structures for Queue Data Strucuture

//
// Queue Data Structure
// 
typedef struct node
{
    int data;
    struct node *next;
}Node;

typedef struct
{
    Node *front,*rear;
    int count;
    int size;
}Que;

Methods 
Node * createNode (int data)
{
    Node *temp = (Node *) malloc (sizeof(Node));
    if (!temp){
        printf("\nerror malloc\n");
            temp = NULL;
    }
    else {
        temp->data = data;
        temp->next = NULL;
    }
        return temp;
}

int isFull (Que *q)
{
    if (q)
    return (q->size == q->count);
}

int isEmpty (Que *q)
{
    if (q)
    return (q->front == NULL);
}

void enQue (Que *q, int data)
{
    printf ("adding %d\n",data);
    Node *temp = NULL;
    if (isFull(q)){
        printf("\nQue Full\n");
        return ;
    }
    temp = createNode(data);
    if(q->rear){
        q->rear->next = temp;
        q->rear = temp;
    }
    else {
        q->rear = temp;
        q->front = temp;
    }
}

int deQue (Que *q)
{
    int ret = -1;
    Node *temp = NULL;
    if (isEmpty(q))
        printf("\nEmpty Q\n");
    else {
        temp = q->front;
        ret = temp->data;
        q->front = q->front->next;
        free(temp);
    if (!q->front)
        q->rear = q->front;
    }
return ret;
}

1 comment:

  1. The King of Dealer: The King of Dealer
    The 카지노 King of Dealer. In Stock. $0.25 Buy This Large Range of Gaming kirill-kondrashin Equipment for Any Room

    ReplyDelete