Revision 0:28ba51765608, committed 2018-07-27
- Comitter:
- alejo5214416
- Date:
- Fri Jul 27 00:31:19 2018 +0000
- Commit message:
- Esclavo Maestro
Changed in this revision
qnode.cpp | Show annotated file Show diff for this revision Revisions of this file |
qnode.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qnode.cpp Fri Jul 27 00:31:19 2018 +0000 @@ -0,0 +1,59 @@ +#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; +} + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qnode.h Fri Jul 27 00:31:19 2018 +0000 @@ -0,0 +1,25 @@ +#include "mbed.h" + +#ifndef QNODE_H +#define QNODE_H + +typedef struct QNode{ + uint8_t uid[4]; + struct QNode *next; +} QNode; + +// The queue, front stores the front node of LL and rear stores ths +// last node of LL +struct Queue +{ + struct QNode *front, *rear; +}; + + +struct QNode* newNode(uint8_t* k); +struct Queue *createQueue(); +void enQueue(struct Queue *q, uint8_t *k); +struct QNode *deQueue(struct Queue *q); + + +#endif \ No newline at end of file