qnode.cpp

Committer:
alejo5214416
Date:
2018-07-27
Revision:
0:28ba51765608

File content as of revision 0:28ba51765608:

#include "qnode.h"
#include "mbed.h"

 
// A utility function to create a new linked list node.
QNode* newNode(uint8_t *k)
{   
    QNode *temp = (struct QNode*)malloc(sizeof(struct QNode));
    for(int i=0;i<4;i++){
        temp->uid[i]=k[i];
        }
    temp->next= NULL;
    return temp; 
}
 
// A utility function to create an empty queue
struct Queue *createQueue()
{
    struct Queue *q = (struct Queue*)malloc(sizeof(struct Queue));
    q->front = q->rear = NULL;
    return q;
}
 
// The function to add a key k to q
void enQueue(struct Queue *q, uint8_t *k)
{
    // Create a new LL node
    struct QNode *temp = newNode(k);
 
    // If queue is empty, then new node is front and rear both
    if (q->rear == NULL)
    {
       q->front = q->rear = temp;
       return;
    }
 
    // Add the new node at the end of queue and change rear
    q->rear->next = temp;
    q->rear = temp;
}
 
// Function to remove a key from given queue q
struct QNode *deQueue(struct Queue *q)
{
    // If queue is empty, return NULL.
    if (q->front == NULL)
       return NULL;
 
    // Store previous front and move front one node ahead
    struct QNode *temp = q->front;
    q->front = q->front->next;
 
    // If front becomes NULL, then change rear also as NULL
    if (q->front == NULL)
       q->rear = NULL;
    return temp;
}