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 nodeExplanation / 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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.