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; }