C Program of single linked list

Views 68

About:

C Program of single linked list

Program:

/* P3.1 Program of single linked list*/

#include<stdio.h>
#include<stdlib.h>

struct node
{
	int info;
	struct node *link;
};

struct node *create_list(struct node *start);
void display(struct node *start);
void count(struct node *start);
void search(struct node *start,int data);
struct node *addatbeg(struct node *start,int data);
struct node *addatend(struct node *start,int data);
struct node *addafter(struct node *start,int data,int item);
struct node *addbefore(struct node *start,int data,int item );
struct node *addatpos(struct node *start,int data,int pos);
struct node *del(struct node *start,int data);
struct node *reverse(struct node *start);

main()
{
	struct node *start=NULL;	
	int choice,data,item,pos;
		
	while(1)
	{
		printf("1.Create List\n");
		printf("2.Display\n");
		printf("3.Count\n");
		printf("4.Search\n");
		printf("5.Add to empty list / Add at beginning\n");
		printf("6.Add at end\n");
		printf("7.Add after node\n");
		printf("8.Add before node\n");
		printf("9.Add at position\n");
		printf("10.Delete\n");
		printf("11.Reverse\n");
		printf("12.Quit\n\n");
		
		printf("Enter your choice : ");
		scanf("%d",&choice);
		
		switch(choice)
		{
		 case 1:
			start=create_list(start);
			break;
		 case 2:
			display(start);
			break;
		 case 3:
			count(start);
			break;
		 case 4:
			printf("Enter the element to be searched : ");
			scanf("%d",&data);
			search(start,data);
			break;
		 case 5:
			printf("Enter the element to be inserted : ");
			scanf("%d",&data);
			start=addatbeg(start,data);
			break;
		 case 6:
			printf("Enter the element to be inserted : ");
			scanf("%d",&data);
			start=addatend(start,data);
			break;
		 case 7:
			printf("Enter the element to be inserted : ");
			scanf("%d",&data);
			printf("Enter the element after which to insert : ");
			scanf("%d",&item);
			start=addafter(start,data,item);
			break;
		 case 8:
			printf("Enter the element to be inserted : ");
			scanf("%d",&data);
			printf("Enter the element before which to insert : ");
			scanf("%d",&item);
			start=addbefore(start,data,item);
			break;
		 case 9:
			printf("Enter the element to be inserted : ");
			scanf("%d",&data);
			printf("Enter the position at which to insert : ");
			scanf("%d",&pos);
			start=addatpos(start,data,pos);
			break;
		 case 10:
			printf("Enter the element to be deleted : ");
			scanf("%d",&data);
			start=del(start, data);	
			break;
		 case 11:
			start=reverse(start);
			break;
		 case 12:
			 exit(1);
		 default:
			 printf("Wrong choice\n");
		}/*End of switch */
	}/*End of while */
}/*End of main()*/

struct node *create_list(struct node *start)
{
	int i,n,data;
	printf("Enter the number of nodes : ");
	scanf("%d",&n);
	start=NULL;
	if(n==0)
		return start;

	printf("Enter the element to be inserted : ");
	scanf("%d",&data);
	start=addatbeg(start,data);

	for(i=2;i<=n;i++)
	{
		printf("Enter the element to be inserted : ");
		scanf("%d",&data);
		start=addatend(start,data);	
	}
	return start;
}/*End of create_list()*/

void display(struct node *start)
{
	struct node *p;
	if(start==NULL)
	{
		printf("List is empty\n");
		return;
	}
	p=start;
	printf("List is :\n");
	while(p!=NULL)
	{
		printf("%d ",p->info);
		p=p->link;
	}
	printf("\n\n");
}/*End of display() */

void count(struct node *start)
{
	struct node *p;
	int cnt=0;
	p=start;
	while(p!=NULL)
	{
		p=p->link;
		cnt++;
	}
	printf("Number of elements are %d\n",cnt);
}/*End of count() */

void search(struct node *start,int item)
{
	struct node *p=start;
	int pos=1;
	while(p!=NULL)
	{
		if(p->info==item)
		{
			printf("Item %d found at position %d\n",item,pos);
			return;
		}
		p=p->link;
		pos++;
	}
	printf("Item %d not found in list\n",item);
}/*End of search()*/

struct node *addatbeg(struct node *start,int data)
{
	struct node *tmp;
	tmp=(struct node *)malloc(sizeof(struct node));
	tmp->info=data;
	tmp->link=start;
	start=tmp;
	return start;
}/*End of addatbeg()*/

struct node *addatend(struct node *start,int data)
{
	struct node *p,*tmp;
	tmp=(struct node *)malloc(sizeof(struct node));
	tmp->info=data;
	p=start;
	while(p->link!=NULL)
		p=p->link;
	p->link=tmp;
	tmp->link=NULL;
	return start;
}/*End of addatend()*/

struct node *addafter(struct node *start,int data,int item)
{
	struct node *tmp,*p;
	p=start;
	while(p!=NULL)
	{
		if(p->info==item)
		{
			tmp=(struct node *)malloc(sizeof(struct node));
			tmp->info=data;
			tmp->link=p->link;
			p->link=tmp;
			return start;
		}
		p=p->link;
	}
	printf("%d not present in the list\n",item);
	return start;
}/*End of addafter()*/

struct node *addbefore(struct node *start,int data,int item)
{
	struct node *tmp,*p;
	if(start==NULL )
	{
		printf("List is empty\n");
		return start;
	}	
	/*If data to be inserted before first node*/
	if(item==start->info)
	{
		tmp=(struct node *)malloc(sizeof(struct node));
		tmp->info=data;
		tmp->link=start;
		start=tmp;
		return start;
	}	
	p=start;
	while(p->link!=NULL) 
	{
		if(p->link->info==item)
		{
			tmp=(struct node *)malloc(sizeof(struct node));
			tmp->info=data;
			tmp->link=p->link;
			p->link=tmp;
			return start;
		}
		p=p->link;
	}
	printf("%d not present in the list\n",item);
	return start;
}/*End of addbefore()*/	

struct node *addatpos(struct node *start,int data,int pos)
{
	struct node *tmp,*p;
	int i;
	tmp=(struct node *)malloc(sizeof(struct node));
	tmp->info=data;
	if(pos==1)
	{
		tmp->link=start; 
		start=tmp;
		return start;
	}
	p=start;
	for(i=1; i<pos-1 && p!=NULL; i++)
		p=p->link;
	if(p==NULL)
		printf("There are less than %d elements\n",pos);
	else
	{
		tmp->link=p->link;
		p->link=tmp;
	}	
	return start;
}/*End of addatpos()*/

struct node *del(struct node *start,int data)
{
	struct node *tmp,*p;
	if(start==NULL)
	{
		printf("List is empty\n");
		return start;
	}
	/*Deletion of first node*/
	if(start->info==data)
	{
		tmp=start;
		start=start->link;  
		free(tmp);
		return start;
	}
	/*Deletion in between or at the end*/
	p=start;
	while(p->link!=NULL)
	{
		if(p->link->info==data)   
		{
			tmp=p->link;
			p->link=tmp->link;
			free(tmp);
			return start;
		}
		p=p->link;
	}
	printf("Element %d not found\n",data);
	return start;
}/*End of del()*/

struct node *reverse(struct node *start)
{
	struct node *prev, *ptr, *next;
	prev=NULL;
   	ptr=start;
	while(ptr!=NULL)
	{
		next=ptr->link;
		ptr->link=prev;
		prev=ptr;
		ptr=next;
	}
	start=prev;
	return start;
}/*End of reverse()*/ 

Output:

Output :

1.Create List 2.Display 3.Count 4.Search 5.Add to empty list / Add at beginning 6.Add at end 7.Add after node 8.Add before node 9.Add at position 10.Delete 11.Reverse 12.Quit Enter your choice : 1 Enter the number of nodes : 5 Enter the element to be inserted : 12 Enter the element to be inserted : 13 Enter the element to be inserted : 14 Enter the element to be inserted : 15 Enter the element to be inserted : 16 1.Create List 2.Display 3.Count 4.Search 5.Add to empty list / Add at beginning 6.Add at end 7.Add after node 8.Add before node 9.Add at position 10.Delete 11.Reverse 12.Quit Enter your choice : 2 List is : 12 13 14 15 16 1.Create List 2.Display 3.Count 4.Search 5.Add to empty list / Add at beginning 6.Add at end 7.Add after node 8.Add before node 9.Add at position 10.Delete 11.Reverse 12.Quit Enter your choice : 3 Number of elements are 5 1.Create List 2.Display 3.Count 4.Search 5.Add to empty list / Add at beginning

Explanation:

C Program of single linked list

Share Me:

Program List

Data Structure Program List
1.  Implementation of Quicksort Algorithm using C 2.  Tree Traversal in C Programming Language 3.  C Program of polynomial addition and multiplication using linked list 4.  C Program to concatenate two circular linked lists 5.  C Program to concatenate two single linked lists 6.  C Program of sorting a singly linked list 7.  Program of merging two sorted single linked lists 8.  C Program of sorted linked list 9.  C Program of the single linked list with header node 10.  C Program of circular linked list 11.  C Program of doubly linked list 12.  C Program of single linked list 13.  C Program of the queue using the circular linked list 14.  C Program of the circular queue 15.  C Program of dequeue using a circular array 16.  C Program of reversing a string using stack 17.  C Program of priority queue using a linked list 18.  Program of queue using linked list 19.  Program of queue using array 20.  Program of stack using linked list 21.  Program of stack using array 22.  Array limit value and an array element address are printed in this program 23.  Implementation of insertion sort in c programming language 24.  C Program to Read Array Elements 25.  C Program to Print Array Elements 26.  How to add array Elements with a constant 27.  Multiply all elements in an array 28.  How to add only the even elements in the array 29.  How to add only the odd elements in the array 30.  How to add an element to every element of the array 31.  How to subtract an element form every element of the array 32.  How to multiply an element to every element of the array 33.  How to divide an element from every element of the array 34.  How to square each element of the array 35.  Add all element in the array 36.  C Program to Delete an element from the specified location from Array 37.  C Program to Insert an element in an Array 38.  C Program to Copy all elements of an array into Another array 39.  C Program to Search an element in Array 40.  C Program to Merge Two arrays in C Programming 41.  C Program to Reversing an Array Elements in C Programming 42.  C Program to Find Largest Element in Array in C Programming 43.  C Program to Find Smallest Element in Array in C Programming 44.  C Program to Calculate Addition of All Elements in Array 45.  C Program to Delete duplicate elements from an array 46.  C Program to Read integers into an array and Reversing them using Pointers 47.  Bubble sort algorithm implementation in C 48.  Bubble sort in C language using function 49.  C program for implementation of selection sort input taken inside program 50.  Selection sort algorithm implementation in C 51.  C Program to Sort Elements Using Selection Sort Algorithm 52.  Selection Sort Program in C using different function 53.  Merge Sort program in the data structure 54.  Implementing QuickSort Algorithm