struct Person{
	int id;
	string name;
	Person *next;
};

struct List{
	Person *head;
};
[/sourcecode]

All the operations of the linkedlist are here:

[sourcecode language="cpp"]
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;

struct Person{
	int id;
	string name;
	Person *next;
};

struct List{
	Person *head;
};

//initialize linked list
void Initialize(List *personlist);
// Insert node in front of linked list
void InsertFront(List *personlist);
// Insert node at the rear of linked list
void InsertRear(List *personlist);
// Delete node from front of linked list
void DeleteFront(List *personlist);
void DeleteRear(List *personlist);
// Delete a node from any position of linked list
void DeleteAny(List *personlist);
// Searching in linked list
void SearchPerson(List *personlist);
void PrintList(List *personlist);
//Deleting all nodes in linked list
void EmptyList(List *personlist);
// Reversing linked list
void Reverse(List *personlist);
//sorting linked list
void SortPersons(List *personlist);

int main()
{
	List *personlist = NULL;
	personlist = new List;
	Initialize(personlist);
	int choice = 0;

	do
    {
		cout<<endl<<endl<<"\t\t Press"<<endl;
		cout << "\t\t [1] key To Add person in front" << endl;
		cout << "\t\t [2] key To Add person in rear" << endl;
		cout << "\t\t [3] key To Delete person from front" << endl;
		cout << "\t\t [4] key To Delete person from rear" << endl;
		cout << "\t\t [5] key To Print person List" << endl;
		cout << "\t\t [6] key To Reverse person List" << endl;
		cout << "\t\t [7] key To Delete all persons" << endl;
		cout << "\t\t [8] key To Delete a person by Id" << endl;
		cout << "\t\t [9] key To Search" << endl;
		cout << "\t\t [10] key To Sort Persons" << endl;
		cout << "\t\t [11] key To Exit" << endl;
		cout << "\t\t  ";cin >> choice;

		switch (choice)
		{
			case 1:
				InsertFront(personlist);	
				PrintList(personlist);
				break;
		
			case 2:
				InsertRear(personlist);	
				PrintList(personlist);
				break;

			case 3:
				DeleteFront(personlist);  
				break;

			case 4:
				DeleteRear(personlist);	
				break;

			case 5:
				PrintList(personlist);    
				break;

			case 6:
				Reverse(personlist);
				break;

			case 7:
				EmptyList(personlist);
				break;
			
			case 8:
				DeleteAny(personlist);
				break;
			
			case 9:
				SearchPerson(personlist);
				break;

			case 10:
				SortPersons(personlist);
				break;
			
			case 11:
				exit(0);
				break;

			default:
				cout<<"Wrong choice"<<endl;
				break;		
		}
	}

	while(true);
}

void Initialize(List *person)
{
	person->head = NULL;
}

void PrintList(List *personlist)
{
	Person * temp;
	temp = personlist->head;
	cout <<endl<<"Total Persons in the list: "<<endl;
	cout<<"------------------------------------------------"<<endl;
	int i = 0;
	if (temp == NULL)
	{
		cout<<"List is empty"<<endl;
		cout<<"------------------------------------------------"<<endl;
	}
	while (temp != NULL)
	{
		i++;
		cout <<"P"<<i<<")\t Id: "<< temp->id <<" - Name: "<< temp->name<<endl;
		temp = temp->next;
		cout<<"------------------------------------------------"<<endl;
	}
}

void Reverse(List *personlist)
{
	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
		return;
	}
	Person *person = personlist->head;
	Person *person_n;
	Person *temp;

	temp = person;
	person = person->next;
	person_n = person;
	while (person_n->next != NULL)
	{
		person_n = person_n->next;
		person->next = temp;
		temp = person;
		person = person_n;
	}
	person_n->next = temp;
	Person *person1 = personlist->head;
	person1->next = NULL;
	personlist->head = person_n;
}

void InsertFront(List *personlist)
{
	int id;
	string name;
	cout <<"Entere id: ";
	cin >> id;
	cout <<"Entere Name: ";
	cin >> name;
	Person *newPerson = new Person();
	newPerson->id = id;
	newPerson->name = name;
	if (personlist->head == NULL)
	{
		personlist->head = newPerson;
		newPerson->next = NULL;
	}
	else
	{
		newPerson->next = personlist->head;
		personlist->head = newPerson;
	}
}

void InsertRear(List *personlist)
{
	int id;
	string name;
	cout <<"Enter id: ";
	cin >> id;
	cout <<"Enter Name: ";
	cin >> name;
	
	Person *newPerson = new Person();
	newPerson->id = id;
	newPerson->name = name;
	if (personlist->head == NULL)
	{
		personlist->head = newPerson;
		newPerson->next = NULL;
	}
	else
	{
		Person *temp = personlist->head;
		while (temp->next != NULL)
		{
			temp = temp->next;
		}

		temp->next = newPerson;
		newPerson->next = NULL;
	}
}

void DeleteFront(List *personlist)
{
	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
	}
	else
	{
		Person *person = personlist->head;
		if (person->next == NULL)
		{
			delete person;
			personlist->head = NULL;
		}
		else
		{
			personlist->head = person->next;
			delete person;
		}
		cout<<"Success: Person is deleted"<<endl;
		cout<<"------------------------------------------------"<<endl;
	}
}

void DeleteRear(List *personlist)
{
	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
	}
	else
	{
		Person *person = personlist->head;
		if (person->next == NULL)
		{
			delete person;
			personlist->head = NULL;
		}
		else
		{
			Person *tmp = person;
			while (person->next != NULL)
			{
				tmp = person;
				person = person->next;
			}

			delete person;
			tmp->next = NULL;
		}
		cout<<"Success: Person is deleted"<<endl;
		cout<<"------------------------------------------------"<<endl;
	}
}

void DeleteAny(List *personlist)
{

	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
	}
	else
	{			
		int ID;
		bool IsDel = false;

		cout <<"Enter person id to delete:\t";
		cin>>ID;
		Person *person = personlist->head;
		if (person->next == NULL)
		{
			if (person->id == ID)
			{
				delete person;
				personlist->head = NULL;
				IsDel = true;
			}
			else
			{
				IsDel = false;
			}
		}

		else if (person->next != NULL)
		{
			if (person->id == ID)
			{
				personlist->head = person->next;
				delete person;
				IsDel = true;
			}
			else
			{
				IsDel = false;
			}
		}

		if (!IsDel && person->next != NULL)
		{
			Person *tmp = person;
			person = person->next;
			while (person->next != NULL)
			{
				if (person->id == ID)
				{
					tmp->next = person->next;
					delete person;
					IsDel = true;
					break;
				}
				tmp = person;
				person = person->next;
			}

			if (person->id == ID)
			{
				delete person;
				tmp->next = NULL;
				IsDel = true;
			}
		}

		if (IsDel)
		{
			cout<<"Success: Person is deleted"<<endl;
		}
		else
		{
			cout<<"Sorry: Could not find person"<<endl;
		}
		cout<<"------------------------------------------------"<<endl;
	}
}

void EmptyList(List *personlist)
{
	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
	}
	else
	{
		Person *person = personlist->head;
		if (person->next == NULL)
		{
			delete person;
			personlist->head = NULL;
		}
		else
		{
			Person *tmp = person;
			while (person->next != NULL)
			{
				tmp = person;
				person = person->next;
				delete tmp;
			}

			personlist->head = NULL;
		}
		cout<<"Success: List is deleted"<<endl;
		cout<<"------------------------------------------------"<<endl;
	}
}

void SearchPerson(List *personlist)
{
	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
		return;
	}

	int ID;
	bool IsFound = false;
	cout <<"Enter ID of the person to search:";
	cin>> ID;

	Person *person = personlist->head;
	if (person->next == NULL)
	{
		if (person->id == ID)
		{
			cout <<"Person Found:"<<endl;
			cout<<person->name<<endl;
			IsFound = true;
		}
		else
		{
			IsFound = false;
		}
	}
	else
	{
		while (person != NULL)
		{
			if (person->id == ID)
			{
				cout <<"Person Found:"<<endl;
				cout<<person->name<<endl;
				IsFound = true;
				break;
			}
			else
			{
				IsFound = false;
			}

			person = person->next;
		}

		if (!IsFound)
		{
			cout<<"Sorry: Person not found"<<endl;
		}
	}
	cout<<"------------------------------------------------"<<endl;
}

void SortPersons(List *personlist)
{
	cout<<"------------------------------------------------"<<endl;
	if (personlist->head == NULL)
	{
		cout<<"Sorry: Person list is empty"<<endl;	
		cout<<"------------------------------------------------"<<endl;
		return;
	}

	Person *person = personlist->head;
	if (person->next == NULL)
	{
		return;
	}

	Person *person_n = person;
	int temp_id;
	string temp_name;

	while (person != NULL)
	{
		person_n = person->next;
		while (person_n != NULL)
		{
			if (person->id < person_n->id )
			{
				temp_id = person->id;
				person->id = person_n->id;
				person_n->id = temp_id;

				temp_name = person->name;
				person->name = person_n->name;
				person_n->name = temp_name;
			}

			person_n = person_n->next;
		}

		person = person->next;
	}
	
}