×
FREE ASSISTANCE FOR THE INQUISITIVE PEOPLE
Tutorial Topics
X
softetechnologies
Link List Fundamentals - using C Delete node of a linear link list using C
Create and insert node in a linear link list using C - Link list - C Language
2126    Arnab De    24/08/2019

Create and insert node in a linear link list. When a list has no any node, i.e. the list is empty or list is NULL then need to create a node. Otherwise we have insert node in the existing list. We can insert a node in different position of the list depend on position or value. The type of inserting node are

  1. Insert at beginning.
  2. Insert at end
  3. Insert at a said position except first and last
  4. Insert at any position
  5. Insert after a value
  6. Insert before a value
softetechnologies

Now we create the basic environment of the link list.

#include<stdio.h>
#include<conio.h>
struct slinearlinklist
{
	int i;
	struct slinearlinklist *next;
};
typedef struct slinearlinklist node;

//prototype declaration
node *create(node *);
node *insert_first(node *);
void insert_end(node *);
void insert_pos1(node *,int);
node *insert_pos2(node *);
node *insert_after(node *);
node *insert_before(node *);

node *head=NULL;

int main()
{
	int c,i,pos;
	while(1)
	{
		printf("\n1. Create a list\n");
		printf("2. Insert into begining\n");
		printf("3. Insert into end position\n");
		printf("4. Insert into position 1\n");
		printf("5. Insert into position [Any where]\n");
		printf("6. Insert after a said value\n");
		printf("7. Insert before a said value\n");
		printf("8. Exit\n");
		printf("Enter Your choice : ");
		scanf("%d",&c);
		switch(c)
		{
			case 1:
				head=create(head);
				break;
			case 2:
				head=insert_first(head); // insert at beginning
				break;
			case 3:
				insert_end(head); // insert at end
				break;
			case 4:
				printf("Enter position : ");//Insert at a said position except first and last
				scanf("%d",&pos);
				insert_pos1(head,pos);
				break;
 			case 5:
				printf("Enter position : ");//Insert at anywhare
				scanf("%d",&pos);
				insert_pos2(head,pos);
				break;
			case 6:
				head=insert_after(head); // insert after a value
				break;
			case 7:
				head=insert_before(head); // insert before a value
				break;
			case 8:
				exit(0);
		}
	}
}

Create a node

Function for create the first node of the list. Here we goning to create the first node. i.e. first node or head will be changed after creation of the node. That is why the return type of the function is node.

node *create(node *l)
{
	if(l==NULL)
	{
		l=(node *)malloc(sizeof(node));//allocate a dynamic memory of node type.
		printf("Enter a data : ");
		scanf("%d",&l->i);
		l->next=NULL;		
	}
	return l;
}

Insert a node at begining

Insert a node at the beginning of the exsiting list. If the list is not found the this function call create() function autometically.

node *insert_first(node *l)
{
	node *temp;
	if(l!=NULL)
	{
		temp=(node *)malloc(sizeof(node));
		printf("Enter a data : ");
		scanf("%d",&temp->i);
		temp->next=l;
		return temp;		
	}
	else
	{
		return create(l);
	}
}
softetechnologies

Insert a node at end

Insert a node at the End of the exsiting list. If the list is not found the this function call create() function autometically.

void insert_end(node *l)
{
	node *temp;
	if(l!=NULL)
	{
		temp=(node *)malloc(sizeof(node));
		printf("Enter a data : ");
		scanf("%d",&temp->i);
		while(l->next!=NULL)
		{ 
			l=l->next;
		}
		temp->next=NULL;
		l->next=temp;
	}
	else
	{
		return create(l);
	}
}

Insert a node at specific Position But not in first and last

Insert a new node in a said position except first and last. If the list is not found the this function call create() function autometically.

void insert_pos1(node *l,int pos){
	node *temp;
	if(l!=NULL)
	{
		temp=(node *)malloc(sizeof(node));
		printf("Enter a data : ");
		scanf("%d",&temp->i);
		for(i=1;i<=pos-2;i++)
		{ 
			l=l->next;
		}
		temp->next=l->next;
		l->next=temp;
	}
	else
	{
		return create(l);
	}
}

Insert a node at any specific Position

Insert a new node in any position of an existing list. If the list is not found the this function call create() function autometically.

node *insert_pos2(node *l)
{
	node *temp,*temp2,*h;
	int pos,i,c=0;
	h=l;
	temp2=l;
	printf("Enter position : ");
	scanf("%d",&pos);
	while(temp2!=NULL)
	{
		c++;
		temp2=temp2->next;
	}
	if(c>=pos)
	{
		insert_pos1(l,pos);//normal
		return h;
	}
	else
	{
		if(l!=NULL)
		{
			insert_end(l);//last insert
			return h;
		}
		else
		{
			return create(l);//create
		}
	}
}
softetechnologies

Insert a new node after a given value

Insert a new node after a given value. if the value not found in existing list, print an appropiate message. If the list is not found the this function call create() function autometically.

node *insert_after(node *l)
{
	node *temp,*h;
	int val;
	int fl=0;
	h=l;
	if(l!=NULL){
		printf("Enter a value(after we insert a new node)");
		scanf("%d",&val);
		while(l->next!=NULL)
		{
			if(l->i==val)
			{
				fl=1;
				break;
			}
			l=l->next;
		}
		if(fl)//found
		{
			if(l->next==NULL)//last node
			{
				insert_end(l);//last insert
			}
			else
			{
				temp=(node *)malloc(sizeof(node));
				temp->next=l->next;
				l->next=temp;
			}			
		}
		else//not found
		{
			printf("Supplied data not found");
		}
		return h;
	}
	else
	{
		return create(l);
	}
}

Insert a new node before a given value

Insert a new node before a given value. if the value not found in existing list, print an appropiate message. If the list is not found the this function call create() function autometically.

node *insert_before(node *l)
{
	node *temp,*h;
	int val;
	int fl=0;
	h=l;
	if(l!=NULL){
		printf("Enter a value(before we insert a new node)");
		scanf("%d",&val);
		while(l->next!=NULL)
		{
			if(l->next->i==val)
			{
				fl=1;
				break;
			}
			l=l->next;
		}
		if(fl)//found
		{
			if(l==h)//first node
			{
				return insert_first(l);//insert at begining
			}
			else
			{
				temp=(node *)malloc(sizeof(node));
				temp->next=l->next;
				l->next=temp;
			} 
		}
		else//not found
		{
			printf("Supplied data not found");
		}
		return h;
	}
	else
	{
		return create(l);
	}
}
Link List Fundamentals - using C Delete node of a linear link list using C
softetechnologies
Author Details
Arnab De
I have over 16 years of experience working as an IT professional, ranging from teaching at my own institute to being a computer faculty at different leading institute across Kolkata. I also work as a web developer and designer, having worked for renowned companies and brand. Through tutorialathome, I wish to share my years of knowledge with the readers.
Enter New Comment
Comment History
06/05/2023: 2F878RB9CL6V www.yandex.ru
By: 2F878RB9CL6V www.yandex.ru [perdata1989@mail.ru]
12/06/2023: 3I0GEK733 https://www.msi.com
By: 3I0GEK733 https://www.msi.com [sbilalap1993@mail.ru]
02/02/2024: jgjgkjhlksjrjtkk www.yandex.ru
By: jgjgkjhlksjrjtkk www.yandex.ru [shumakher1983@list.ru]
Albert Einstein
Do not worry about your difficulties in Mathematics. I can assure you mine are still greater.
Albert Einstein
563
78.5
Today So Far
Total View (Lakh)
softetechnologies
26/05/2018     53634
25/06/2018     44652
01/01/2018     43347
28/06/2017     40988
02/08/2017     39938
01/08/2017     34003
06/07/2017     33838
15/05/2017     33082
11/09/2018     29681
14/07/2017     29487
softetechnologies