An example of singly link list with
the function of insertion, deletion and display
#include<iostream>
#include<conio.h>
using namespace std;
struct node
{
int data;
node *next;
};
//Defined a Structure
class List // where we create the links and combin
them in a list
{
private:
node *first;
// Head start or here its name is first...
public:
List()
{
first = NULL; // null as link list is empty
}
void add(int d)
{
node *ptr, *temp;
if (first == NULL)// will execute only once
as when we will add first element as first is null.
{
temp = new node; // vvimp steps. Create a structure, and
reference will updated have a close look at first.
temp->data = d; // assign value of d come from main
function to first of data.
temp->next = NULL; // Assign null
first = temp;
}
else
{
ptr = first;
while (ptr->next != NULL)
{
ptr = ptr->next;//
same as increment statement as it moves toward null
}
temp = new node; // these three lines add new
elements
temp->data = d;
temp->next = NULL;
ptr->next = temp; // link the nodes with previous
ones....
}
}
void delnode() //deleting
{
node *temp1, *temp2, *temp3;
char d;
cout << "press 's' to
delete from start,'m' for midd , 'e' for end" << endl;
cin >> d;
switch (d)
{
case's': //delete startif(start==NULL)
{ if (first == NULL)
{
cout <<
"no node to delete" << endl;
}
else
{
temp1 = first;
first =
temp1->next;
delete temp1;
}
break;
case'e': //delete endif(start==NULL)
{ if (first == NULL)
{
cout <<
"no node to delete" << endl;
}
else
{
temp1 = first;
while (temp1->next
!= NULL)
{
temp2 =
temp1;
temp1 =
temp1->next;
}
delete temp1;
temp2->next =
NULL;
}}
break;
case'm':
int num;//delete
midint num;
cout <<
"enter node you want to delete" << endl;
cin >> num;
temp1 = first;
for (int i = 1; i
< num; i++)
{
if (first
== NULL)
{
cout
<< "given node does not exist" << endl;
return;
}
else
{ temp2 = temp1;
temp1
= temp1->next;
}
}}
temp3 = temp1->next;
temp2->next =
temp3;
delete temp1;
break;
}
};
void show()
{
node *temp;
temp = first;
cout << "The list
follows:" << endl << endl;
while (temp != NULL) // move towards null
{
cout <<
temp->data << " ";
temp = temp->next;
// same as increment statement as it moves toward null
}
}
};
void main(){
List l;
l.add(20);
l.add(30);
l.add(40);
l.add(50);
l.delnode();
l.show();
system("pause");
}