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

C++ Linked Lists Functions Hi guys, i need help creating the following functions

ID: 3589347 • Letter: C

Question

C++ Linked Lists Functions

Hi guys, i need help creating the following functions for a linked list. Templates are not required but much appreciated. Tried to add as many notes to make things easier. Please comment if you need to clear things up. Please provide a test and all files..main, cpp and .h

Please provide all functions listed.

//Linked List General Functions: template void PrintList (node* head); template void PrintList backwards (node ITEM TYPE> *head); //recursive fun! ) template node ITEM TYPE>*SearchList (node* Inserthead(node(ITEM-TYPE> *&head;, //insert at the head of list ITEM TYPE insertThis); template node ITEM TYPE* InsertAfter(node *afterThis, ITEM TYPE insertThis); template node«ITEM TYPE>* InsertBefore (node«ITEM TYPE>*& head, //insert before ptr node* beforeThis, ITEM TYPE insertThis); template node«ITEM TYPE>* Previou s Node (node* head, //ptr to previous node node*&head;, //delete, return item node ITEM TYPE deleteThis); template node

Explanation / Answer

Here are the generic functions of the first few functions for you:

template <typename ITEM_TYPE>
void PrintList(node<ITEM_TYPE>* head)
{
   node<ITEM_TYPE>* temp = head;
   while(temp != NULL)
   {
      cout << temp->value << " ";
      temp = temp->next;
   }
   cout << endl;
}
template <typename ITEM_TYPE>
void PrintList_backwards(node<ITEM_TYPE>* head)
{
   node<ITEM_TYPE>* temp = head;
   if(temp != NULL)
   {
      while(temp->next != NULL)
          temp = temp->next;
      do
      {
         cout << temp->value << " ";
         temp = temp->prev;
      }while(temp != NULL);  
   }
}
template <typename ITEM_TYPE>
node<ITEM_TYPE>* SearchList(node<ITEM_TYPE>* head, ITEM_TYPE key)
{
   node<ITEM_TYPE>* temp = head;
   while(temp!= NULL)
   {
      if(temp->value == key)
          return temp;
      temp = temp->next;  
   }
   return NULL;
}
template <typename ITEM_TYPE>
node<ITEM_TYPE>* InsertHead(node<ITEM_TYPE>*& head, ITEM_TYPE insertThis)
{
   node<ITEM_TYPE> newNode = new node<ITEM_TYPE>;
   newNode->value = insertThis;
   newNode->prev = NULL;
   newNode->next = head;
   if(head != NULL)
       head->prev = newNode;
   head = newNode;
}
template <typename ITEM_TYPE>
node<ITEM_TYPE>* InsertAfter(node<ITEM_TYPE>*& head, node<ITEM_TYPE>* afterThis, ITEM_TYPE insertThis)
{
   node<ITEM_TYPE> newNode = new node<ITEM_TYPE>;
   newNode->value = insertThis;
   newNode->next = afterThis->next;
   newNode->next->prev = newNode;
   newNode->prev = afterThis;
   afterThis->next = newNode;
   return head;
}
template <typename ITEM_TYPE>
node<ITEM_TYPE>* InsertBefore(node<ITEM_TYPE>*& head, node<ITEM_TYPE>* beforeThis, ITEM_TYPE insertThis)
{
    node<ITEM_TYPE> newNode = new node<ITEM_TYPE>;
   newNode->value = insertThis;
   newNode->next = beforeThis;
   newNode->prev = beforeThis->prev;
   beforeThis->prev->next = newNode;
   beforeThis->prev = newNode;
   return head;
}
template<typename ITEM_TYPE>
node<ITEM_TYPE>* PreviousNode(node<ITEM_TYPE>* head, node<ITEM_TYPE>* prevToThis)
{
    return prevToThis->prev;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote