Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hello! The only extra requirement for this program is that it will be run off an

ID: 3571059 • Letter: H

Question

Hello! The only extra requirement for this program is that it will be run off an old phobos server; please do not use libraries that depend on Windows (like CONIO)

#3 Write an object oriented C++ program to create a doubly linked. Each node should be able to store a person's first and last names, along with their respective age. Initialize the list with 5 nodes. The program should include a member function that allows the user to print out all the nodes whose age is less than a value input by the user (in either direction). It should also allow the user to search for a particular person's name. It should be able to output the lists average age. Finally it should allow for a name to be removed. The program should allow the user to take choices from a menu.

Explanation / Answer

#include <iostream>
#include <string>
using namespace std;

typedef string Elem;               // list element type
class DNode {                   // doubly linked list node
private:
    Elem elem;                   // node element value
    DNode* prev;               // previous node in list
    DNode* next;               // next node in list
    friend class DLinkedList;           // allow DLinkedList access
};

class DLinkedList {               // doubly linked list
public:
    DLinkedList();               // constructor
    ~DLinkedList();               // destructor
    bool empty() const;               // is list empty?
    const Elem& front() const;           // get front element
    const Elem& back() const;           // get back element
    void addFront(const Elem& name);       // add to front of list
    void addBack(const Elem& name);       // add to back of list
    void removeFront();               // remove from front
    void removeBack();               // remove from back
   void displayViaAge();
   void displayViaName();
private:                   // local type definitions
    DNode* header;               // list sentinels
    DNode* trailer;
protected:                   // local utilities
    void add(DNode* v, const Elem& name);       // insert new node before v
    void remove(DNode* v);           // remove node v
};

DLinkedList::DLinkedList() {           // constructor
    header = new DNode;               // create sentinels
    trailer = new DNode;
    header->next = trailer;           // have them point to each other
    trailer->prev = header;
}

    DLinkedList::~DLinkedList() {           // destructor
    while (!empty()) removeFront();       // remove all but sentinels
    delete header;               // remove the sentinels
    delete trailer;
}
                               // insert new node before v
void DLinkedList::add(DNode* v, const Elem& name) {
    DNode* u = new DNode; u->elem = name;       // create a new node for e
    u->next = v;               // link u in between v
    u->prev = v->prev;               // ...and v->prev
    v->prev->next = v->prev = u;
}

void DLinkedList::addFront(const Elem& name)   // add to front of list
    { add(header->next, name); }

void DLinkedList::addBack(const Elem& name)   // add to back of list
    { add(trailer, name); }

   void DLinkedList::remove(DNode* v) {       // remove node v
    DNode* u = v->prev;               // predecessor
    DNode* w = v->next;               // successor
    u->next = w;               // unlink v from list
    w->prev = u;
    delete v;
}

void DLinkedList::removeFront()       // remove from font
    { remove(header->next); }

void DLinkedList::removeBack()       // remove from back
    { remove(trailer->prev); }


   bool DLinkedList::empty() const       // is list empty?
    { return (header->next == trailer); }

const Elem& DLinkedList::front() const   // get front element
    { return header->next->elem; }

const Elem& DLinkedList::back() const       // get back element
    { return trailer->prev->elem; }

void DLinkedList::displayViaAge() {                     //Displays person via age
            
      DNode*temp = header;

       while(temp!=trailer)
       {

           //if(howold = age)
              cout << temp->elem <<endl;
              temp = temp -> next;
       }
     
       cout << temp->elem<<endl;
}

int main(){
   char input = 'z';
   string entry;
   int age;
   DLinkedList person;

   person.addFront("Takkun Bradly");
   person.addBack("Devindra Ardnived");
   person.addBack("SeboY Wang");
   person.addBack("DoubleX Slash");
   person.addBack("Uncle Jelly");


  
   cout << "What would you like to do?" << endl;
   cout << "Enter 'A' to: Add a new person" << endl;
   cout << "Enter 'B' to: Remove a person" << endl;
   cout << "Enter 'C' to: Search for people via age" << endl;
   cout << "Enter 'D' to: Search for people via name" << endl;
   cout << "Enter 'E' to: Average all the total ages" << endl;
   cout << "Enter 'F' to: Quit" << endl;

while(input != 'f') {

   cin >> input;
   cout << endl;

       while ((input != 'a')&&(input != 'b')&&(input != 'c')&&(input != 'd')&&(input != 'e')&&(input != 'f')) {
          
           cout << "Please enter a valid selection" << endl;          
           cin >> input;
       }

       if ((input == 'a')){
           cout << "Please enter their name: ";
           cin.ignore();
           getline(cin, entry);

           cout << "Please enter their age: ";
           cin >> age;
           person.addFront(entry);
          
       }

       if ((input == 'b')){
           cout << "Who would you like to remove: ";
           cin.ignore();
           getline(cin, entry);
           person.removeFront();
       }

       if ((input == 'c')){
           cout << "What is the age of the person you are looking for?: ";
           person.displayViaAge();
       }

       if ((input == 'd')){
           cout << "What is the name of the person you are looking for?: ";
           cin.ignore();
           getline(cin, entry);
           person.addFront(entry);
       }

       if ((input == 'e')){
           return 0;
       }

       cout << endl;
   }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote