Write these functions: InsertHead InsertAfter InsertBefore Delete Node *Search F
ID: 3625353 • Letter: W
Question
Write these functions:
InsertHead
InsertAfter
InsertBefore
Delete
Node *Search
FindPrevious(head, Node *Ptr)
*ALSO MAKE A DISPLAY MENU AND A PRINT FUNCTION.
Write the complete program and make sure it works!! Thank you :)
I have this so far:
#include
#include
#include
#include
using namespace std;
struct Node
{
string Item;
Node *Next;
};
void Insert(Node *&Head, string InsertThis);
void Show(Node *Head);
Node *Search(Node *Head, string Key);
void Delete(Node *&Head, Node *DeleteThis);
main()
{
Node *Head = NULL;
Insert(Head, "One");
Show(Head);
Insert(Head, "Two");
Show(Head);
Insert(Head, "Three");
Show(Head);
Insert(Head, "Four");
Show(Head);
Insert(Head, "Five");
Show(Head);
Insert(Head, "Six");
Show(Head);
Insert(Head, "Seven");
Show(Head);
Node *Hold = Search(Head, "Seven");
Delete(Head, Hold);
Show(Head);
Hold = Search(Head, "Five");
Delete(Head, Hold);
Show(Head);
system("pause");
}
Node *Search(Node *Head, string Key)
{
Node *Walker = Head;
while(Walker = NULL)
{
if(Walker -> Item == Key)
return Walker;
Walker = Walker -> Next;
}
}
void Delete(Node *&Head, Node *DeleteThis)
{
Node *Temp;
Node *Walker = Head;
if(DeleteThis == Head)
{
Temp = Head -> Next;
Head -> Next = NULL;
delete Head;
Head = Temp;
}
else
{
while((Walker != NULL) && (Walker -> Next != DeleteThis))
{
Walker = Walker -> Next;
}
if(Walker == NULL)
{
return;
}
Walker -> Next = NULL;
delete DeleteThis;
}
}
void Insert(Node *&Head, string InsertThis)
{
Node *Temp;
Temp = new(Node);
Temp -> Item = InsertThis;
Temp -> Next = Head;
Head = Temp;
}
void Show(Node *Head)
{
Node *Walker = Head;
cout << endl << "{";
while(Walker != NULL)
{
cout << "[" << Walker -> Item << "] ";
Walker = Walker -> Next;
}
cout << "}" << endl;
}