Nov
28
2008

C++ Program to implement a single linked list

C++ Program to implement a single linked list and Perform the following operations.

/**************************************************************	
	Author: Arun Vishnu M V
	Web: www.arunmvishnu.com
	Description: C++ Program to implement a single linked list and Perform the following operations
		 1: Insertioin
		 2: Deletion
         3: Display
***************************************************************/
#include<conio.h>   	
#include<iostream.h> 
#include<process.h>  
 
//   Creating a NODE Structure
struct node
{
	int data;  // data
	struct node *next,*start; //  link to next node and previous node
};
 
// Creating a class LIST
class list
{
	struct node *start;
	public:
		void create(); // to create a list
		void insert();  // insertion
		void del();    // deletion
		void show();   // show
};
// Creating a new node
void list::create()
{
	struct node *nxt_node,*pre_node;
	int value,no,i;
	start=nxt_node=pre_node=NULL;
	cout<<"\nCREATING A NEW LIST.........\n\nHow many nodes : ";
	cin>>no;
	for(i=1;i<=no;i++)
	{
		cout<<"Enter "<<no<<" DATAs: ";
		cin>>value;
		nxt_node=new node;
		if(pre_node!=NULL)
			pre_node->next=nxt_node;
		if(start==NULL)
		  start=nxt_node;
		nxt_node->data=value;
		nxt_node->next=NULL;
		pre_node=nxt_node;
	}
	cout<<"\nThe list is created!";
	show();
}
 
// Displaying LIST
void list::show()
{
	int data;
	struct node *ptr=start;
	cout<<"\n\nThe List is \n";
	while(ptr!=NULL)
	{
		data=ptr->data;
		cout<<data<<" -> ";
		ptr=ptr->next;
	}
	cout<<"\b\b\b   ";
	getch();
}
 
// Insert node at any position
void list::insert()
{
	int position,dat;
	struct node *ptr_b,*ptr_f,*ptr,*nxt_node,*pre_node;
	cout<<"\nInsertion of a new node \n";
	cout<<"Enter the DATA after which the new node is to be inserted.\n";
	cout<<"[ If the data is not found the new node will be";
	cout<<" created at first ]\n\t->:  ";
	cin>>position;
	cout<<"Enter the data to insert: ";
	cin>>dat;
	ptr_b=start;
	ptr=new node;
	ptr->data=dat;
	if(start!=NULL)
	{
		while(ptr_b->next!=NULL && ptr_b->data!=position)
		{
			ptr_b=ptr_b->next;
		}
	}
	else
	{
		clrscr();
		start=nxt_node=pre_node=NULL;
		nxt_node=new node;
		if(pre_node!=NULL)
			pre_node->next=nxt_node;
		if(start==NULL)
		  start=nxt_node;
		nxt_node->data=dat;
		nxt_node->next=NULL;
		pre_node=nxt_node;
		return;
	}
	if(ptr_b->next==NULL && ptr_b->data!=position)
	//Insertion at first
	{
		ptr->next=start;
		start=ptr;
	}
	else if(ptr_b->next==NULL && ptr_b->data==position)
	//insertion at the end of list
	{
		ptr_b->next=ptr;
		ptr->next=NULL;
 	}
	else
	//Insertion between two nodes
	{
		ptr_f=ptr_b->next;
		ptr->next=ptr_b->next;
		ptr_b->next=ptr;
	}
	cout<<"\nNew node is inserted!!";
	getch();
}  //End of insertion
 
//Delete node from any position
void list::del()
{
	int position,dat;
	struct node *ptr_b,*ptr_f,*ptr,*pntr;
	cout<<"Enter the data to be beleted: ";
	cin>>position;
	ptr=start;
	while(ptr->next!=NULL && ptr->data!=position)
	{
		pntr=ptr;
		ptr=ptr->next;
	}
	if(ptr->next==NULL && ptr->data!=position)
	//Data not found
	{
		cout<<"\nData not found!!";
		getch();
		return;
	}
	else if(ptr->next==NULL && ptr->data==position)
	//Deletion from the end of list
	{
		ptr_b=pntr;
		if(pntr->next)//  Only one node
			start=NULL;
		dat=ptr->data;
		ptr_b->next=NULL;
	}
	else
	//Deletion between two nodes or first node
	{
		dat=ptr->data;
		if(start==ptr)  // delete first node
		{
			start=ptr->next;
			ptr_f=start;
		}
		else // Deletion between two nodes
		{
			dat=ptr->data;
			ptr_b=pntr;
			ptr_b->next=ptr->next;
			//ptr_f=ptr_b->next;
		}
	}
	delete ptr;
	cout<<"\nThe node is deleted!!\nData= "<<dat;
	getch();
}  //End of deletion
 
 
// Main function
int main()
{
	clrscr();
	list l;
	l.create(); // to create a new node
	int choice;
	while(1)
	{
		cout<<"\n-------------------------------------------";
		cout<<"\n\t\t LINKED LIST\n\n";
		cout<<"1:Insertion\n2:Deletion\n3:Display List\n4:Exit";
		cout<<"\nEnter your choice(1-4): ";
		cin>>choice;
		switch(choice)
		{
		 case 1:  // Insertion
			l.insert();
			 break;
		 case 2:   // Deletion
			l.del();
			break;   
		 case 3:  // Display
			l.show();
			break;
		 case 4:  // Exit
			exit(0);
			break;
		 default:
			cout<<"Please enter correct choice(1-4)!!";
		 getch();
		 break;
		}
	}
	return 0;
}
//---------------------- END--------------------

Related Posts

Author: Arun Vishnu

1 Comment + Add Comment

  • sir,

    am doin my BE CSE..i did not understand the programs…plz explain line by line in detail…plz sir plz sir plz sir..i’ll be very grateful to u..

Leave a comment

Archives

Highslide for Wordpress Plugin