Files at this revision

API Documentation at this revision

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