Lab 10

The purpose of this lab is to implement the node insertion, remove, and print reverse operations for a doubly linked list {where each Node contains a pointer to next "successor" and prev "predecessor"}. Constraints: the head node's prev will always be NULL, and the last node's next will always be NULL.

Use the following pseudocode to implement the following operations:


bool insert(const int pos, const T& elem)

if position is less than 1 or greater than count + 1
    return false
Create a newnode pointer by calling createNode passing elem
if position is equal to 1 or if head is equal to NULL
    set newnode's next to head
    set newnode's prev to NULL    // not necessary but safe
    if head is not equal to NULL
        set head's prev to newnode
    set head to newnode
else
    create a node pointer (cur) and set to head
    declare an integer variable (i) and set to 1
    while cur's next does not equal NULL and i does not equal pos - 1
        set cur to cur's next and increment i
    set newnode's next to cur's next
    set newnode's prev to cur
    if cur's next does not equal NULL
        set cur's next's prev to new node 
    set cur's next to newnode
endif
increment count
return true

bool remove(const T& elem)

Create a node pointer (cur) and set to head
while cur does not equal NULL
| if cur's data is equal to the elem to remove {
| |   if cur is equal to head {
| |   |   set head to head's next
| |   |   if head does not equal NULL 
| |   |   L   set head's prev to NULL
| |   L}
| |   else {
| |   |   if cur's next does not equal NULL  
| |   |   L   set cur's next's prev to cur's prev
| |   |   if cur's prev does not equal NULL  // not necessary but safe
| |   |   L   set cur's prev's next to cur's next
| |   |   delete cur
| |   |   set cur to NULL
| |   |   decrement count
| |   |   return true
| |   L}
| L}
| else {
| | set cur to cur's next
| L}
endWhile
return false  (element was never found)

void printReverse()

/* NOTE: the following is a procedural implementation and *
 * LinkedList does not contain a Tail member variable     */
create a node pointer (cur) and set to head
while cur's next does not equal null
  set cur to cur's next
endWhile
while cur does not equal NULL
  print out cur's data
  update cur to cur's prev
endwhile
print out count number of elements

Copy the following code and implement these functions within LinkedList.cpp
Lab10 Files
~$wget http://www.cs.csubak.edu/~derrick/cs2020/examples/lab10/LinkedList.cpp .
~$wget http://www.cs.csubak.edu/~derrick/cs2020/examples/lab10/LinkedList.h .
~$wget http://www.cs.csubak.edu/~derrick/cs2020/examples/lab10/Node.cpp .
~$wget http://www.cs.csubak.edu/~derrick/cs2020/examples/lab10/Node.h .
~$wget http://www.cs.csubak.edu/~derrick/cs2020/examples/lab10/lab10.cpp .


Show me your completed code in class or have ALL the files within your depository directory. ~/2020_S18/wk10/