Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed ESC SR04 TSI
com/queue/queue.cpp@30:17297295ce0c, 2013-06-09 (annotated)
- Committer:
- dereklmc
- Date:
- Sun Jun 09 04:14:21 2013 +0000
- Revision:
- 30:17297295ce0c
- Parent:
- 16:5f736b955d53
Updated sr04 include
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gabdo | 16:5f736b955d53 | 1 | /*************************** queue.cpp ***************************************/ |
gabdo | 16:5f736b955d53 | 2 | /* */ |
gabdo | 16:5f736b955d53 | 3 | /* Authers: Oanh Tran, Ling Lei, Sihao Xie, Greg Abdo. */ |
gabdo | 16:5f736b955d53 | 4 | /* Date: February 23, 2013 */ |
gabdo | 16:5f736b955d53 | 5 | /* Version: 1.0 */ |
gabdo | 16:5f736b955d53 | 6 | /* */ |
gabdo | 16:5f736b955d53 | 7 | /* The queue is used to stack StructureItem in order with a FILO */ |
gabdo | 16:5f736b955d53 | 8 | /*arrangement. */ |
gabdo | 16:5f736b955d53 | 9 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 10 | |
gabdo | 16:5f736b955d53 | 11 | #include "queue.h" |
gabdo | 16:5f736b955d53 | 12 | |
gabdo | 16:5f736b955d53 | 13 | /***************************** constructor ***********************************/ |
gabdo | 16:5f736b955d53 | 14 | /* Description: */ |
gabdo | 16:5f736b955d53 | 15 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 16 | |
gabdo | 16:5f736b955d53 | 17 | queue::queue() |
gabdo | 16:5f736b955d53 | 18 | { |
gabdo | 16:5f736b955d53 | 19 | front = NULL; // Set front to NULL at the start. |
gabdo | 16:5f736b955d53 | 20 | } |
gabdo | 16:5f736b955d53 | 21 | |
gabdo | 16:5f736b955d53 | 22 | /******************************* distructor **********************************/ |
gabdo | 16:5f736b955d53 | 23 | /* Description: */ |
gabdo | 16:5f736b955d53 | 24 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 25 | |
gabdo | 16:5f736b955d53 | 26 | queue::~queue() |
gabdo | 16:5f736b955d53 | 27 | { |
gabdo | 16:5f736b955d53 | 28 | clear(); // Clear the entire queue. |
gabdo | 16:5f736b955d53 | 29 | } |
gabdo | 16:5f736b955d53 | 30 | |
gabdo | 16:5f736b955d53 | 31 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 32 | /* Description: */ |
gabdo | 16:5f736b955d53 | 33 | /* Accepts: */ |
gabdo | 16:5f736b955d53 | 34 | /* Returns: */ |
gabdo | 16:5f736b955d53 | 35 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 36 | |
gabdo | 16:5f736b955d53 | 37 | bool queue::isEmpty() |
gabdo | 16:5f736b955d53 | 38 | { |
gabdo | 16:5f736b955d53 | 39 | // Is the queue empty? |
gabdo | 16:5f736b955d53 | 40 | if( front == NULL ) // Check the front pointer. |
gabdo | 16:5f736b955d53 | 41 | return true; // Queue is empty, return true. |
gabdo | 16:5f736b955d53 | 42 | |
gabdo | 16:5f736b955d53 | 43 | return false; // There is atleast one item, not empty. |
gabdo | 16:5f736b955d53 | 44 | } |
gabdo | 16:5f736b955d53 | 45 | |
gabdo | 16:5f736b955d53 | 46 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 47 | /* Description: */ |
gabdo | 16:5f736b955d53 | 48 | /* Accepts: */ |
gabdo | 16:5f736b955d53 | 49 | /* Returns: */ |
gabdo | 16:5f736b955d53 | 50 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 51 | |
gabdo | 16:5f736b955d53 | 52 | void queue::clear() |
gabdo | 16:5f736b955d53 | 53 | { |
gabdo | 16:5f736b955d53 | 54 | // Is the list already empty? |
gabdo | 16:5f736b955d53 | 55 | if( isEmpty() ) // Check for an empty list. |
gabdo | 16:5f736b955d53 | 56 | return; // List is empty, don't need to do anything. |
gabdo | 16:5f736b955d53 | 57 | |
gabdo | 16:5f736b955d53 | 58 | queueNode * current = front; // Create node to help step through list. |
gabdo | 16:5f736b955d53 | 59 | queueNode * placeHold = front; // Create node to keep place of delete. |
gabdo | 16:5f736b955d53 | 60 | |
gabdo | 16:5f736b955d53 | 61 | // As long as were not at the end, keep stepping to the next node. |
gabdo | 16:5f736b955d53 | 62 | while( current != NULL) |
gabdo | 16:5f736b955d53 | 63 | { |
gabdo | 16:5f736b955d53 | 64 | placeHold = current->next; // Hold where we have to go. |
gabdo | 16:5f736b955d53 | 65 | delete current; // Delete the node. |
gabdo | 16:5f736b955d53 | 66 | current = placeHold; // Set current to the next node. |
gabdo | 16:5f736b955d53 | 67 | } |
gabdo | 16:5f736b955d53 | 68 | |
gabdo | 16:5f736b955d53 | 69 | front = NULL; // Reset the front to NULL; |
gabdo | 16:5f736b955d53 | 70 | } |
gabdo | 16:5f736b955d53 | 71 | |
gabdo | 16:5f736b955d53 | 72 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 73 | /* Description: */ |
gabdo | 16:5f736b955d53 | 74 | /* Accepts: */ |
gabdo | 16:5f736b955d53 | 75 | /* Returns: */ |
gabdo | 16:5f736b955d53 | 76 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 77 | |
gabdo | 16:5f736b955d53 | 78 | void queue::add( char * item ) |
gabdo | 16:5f736b955d53 | 79 | { |
gabdo | 16:5f736b955d53 | 80 | // Were we passed an invalid object somehow? |
gabdo | 16:5f736b955d53 | 81 | if( item == NULL ) // Check for NULL |
gabdo | 16:5f736b955d53 | 82 | return; // If so, return. |
gabdo | 16:5f736b955d53 | 83 | |
gabdo | 16:5f736b955d53 | 84 | queueNode * newNode = new queueNode( item ); // Create the new node. |
gabdo | 16:5f736b955d53 | 85 | |
gabdo | 16:5f736b955d53 | 86 | if( isEmpty() ) |
gabdo | 16:5f736b955d53 | 87 | front = newNode; // Set front to the new node. |
gabdo | 16:5f736b955d53 | 88 | |
gabdo | 16:5f736b955d53 | 89 | else |
gabdo | 16:5f736b955d53 | 90 | { |
gabdo | 16:5f736b955d53 | 91 | queueNode *temp = front; |
gabdo | 16:5f736b955d53 | 92 | while( temp->next != NULL ) |
gabdo | 16:5f736b955d53 | 93 | temp = temp->next; |
gabdo | 16:5f736b955d53 | 94 | |
gabdo | 16:5f736b955d53 | 95 | temp->next = newNode; |
gabdo | 16:5f736b955d53 | 96 | } |
gabdo | 16:5f736b955d53 | 97 | } |
gabdo | 16:5f736b955d53 | 98 | |
gabdo | 16:5f736b955d53 | 99 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 100 | /* Description: */ |
gabdo | 16:5f736b955d53 | 101 | /* Accepts: */ |
gabdo | 16:5f736b955d53 | 102 | /* Returns: */ |
gabdo | 16:5f736b955d53 | 103 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 104 | |
gabdo | 16:5f736b955d53 | 105 | char * queue::pop() |
gabdo | 16:5f736b955d53 | 106 | { |
gabdo | 16:5f736b955d53 | 107 | // Is the list already empty? |
gabdo | 16:5f736b955d53 | 108 | if( isEmpty() ) // Check for an empty list. |
gabdo | 16:5f736b955d53 | 109 | return NULL; // List is empty, don't need to do anything. |
gabdo | 16:5f736b955d53 | 110 | |
gabdo | 16:5f736b955d53 | 111 | char* placeHold = front->data; |
gabdo | 16:5f736b955d53 | 112 | // Keep track of what were returning. |
gabdo | 16:5f736b955d53 | 113 | delete front; // Delete the front node. |
gabdo | 16:5f736b955d53 | 114 | front = front->next; // Set front to next object. |
gabdo | 16:5f736b955d53 | 115 | return placeHold; // return the stuctureItem. |
gabdo | 16:5f736b955d53 | 116 | } |
gabdo | 16:5f736b955d53 | 117 | |
gabdo | 16:5f736b955d53 | 118 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 119 | /* Description: */ |
gabdo | 16:5f736b955d53 | 120 | /* Accepts: */ |
gabdo | 16:5f736b955d53 | 121 | /* Returns: */ |
gabdo | 16:5f736b955d53 | 122 | /*****************************************************************************/ |
gabdo | 16:5f736b955d53 | 123 | |
gabdo | 16:5f736b955d53 | 124 | char * queue::peek() |
gabdo | 16:5f736b955d53 | 125 | { |
gabdo | 16:5f736b955d53 | 126 | if( front != NULL ) |
gabdo | 16:5f736b955d53 | 127 | return front->data; |
gabdo | 16:5f736b955d53 | 128 | |
gabdo | 16:5f736b955d53 | 129 | return NULL; |
gabdo | 16:5f736b955d53 | 130 | } |