This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
notes:data:spring2024:projects:waq0 [2024/04/16 14:25] – created wedge | notes:data:spring2024:projects:waq0 [2024/04/16 17:53] – [Function to Create a Queue] rspringe | ||
---|---|---|---|
Line 1: | Line 1: | ||
======WAQ0====== | ======WAQ0====== | ||
+ | =====Doubly Linked Queue===== | ||
+ | A doubly linked queue is another form of doubly linked list that allows for adding and removing elements, like a stack. However, unlike a stack, where elements are added and removed from the top of the stack, in a queue elements are added to the top of the queue, and removed from the bottom. | ||
+ | |||
+ | ====FIFO==== | ||
+ | |||
+ | ====Function to Create a Queue==== | ||
+ | Here is what the pseudocode for creating a basic doubly linked queue would look like: | ||
+ | |||
+ | < | ||
+ | struct/ | ||
+ | Data Obj will contain | ||
+ | |||
+ | prevElement pointer to previous Obj in queue | ||
+ | nextElement pointer to next Obj in queue | ||
+ | |||
+ | struct/ | ||
+ | firstElement pointer to bottom of queue | ||
+ | lastElement pointer to top of queue | ||
+ | |||
+ | Initialize prevObj | ||
+ | Initialize nextObj | ||
+ | |||
+ | add function (Obj* obj): | ||
+ | Set prevObj and nextObj to obj's previous element and next element, respectively | ||
+ | | ||
+ | if queue is empty: | ||
+ | Set queue' | ||
+ | Set obj's prev element to NULL | ||
+ | | ||
+ | else: | ||
+ | Set obj's previous element to queue' | ||
+ | Set queue' | ||
+ | Set queue' | ||
+ | |||
+ | Set obj's next element to NULL | ||
+ | | ||
+ | Point prevObj and nextObj to each other | ||
+ | | ||
+ | remove function: | ||
+ | Grab queue' | ||
+ | Set nextObj to this obj's next element (second in queue) | ||
+ | | ||
+ | Set queue' | ||
+ | Set nextObj' | ||
+ | Set obj's next element to NULL | ||
+ | | ||
+ | return obj | ||
+ | | ||
+ | Main Code: | ||
+ | Initialize Queue | ||
+ | | ||
+ | Initialize elements | ||
+ | | ||
+ | Use add and remove functions throughout code | ||
+ | | ||
+ | </ |