Link List Program in C
Link List Program in C
Program
Here is a program for building and printing the elements of the linked list:
# include <stdio.h>
# include <stdlib.h>
struct node
{
int data;
struct node *link;
};
if(p==NULL)
{
p=(struct node *)malloc(sizeof(struct node)); /* creates new node
data value passes as parameter */
if(p==NULL)
{
printf("Error\n");
exit(0);
}
p->data = n;
p->link = p; /* makes the pointer pointing to itself because it
is a circular list*/
}
else
{
temp = p; /* traverses the existing list to get the pointer to the
last node of it */
while (temp->link != p)
temp = temp->link;
temp->link = (struct node *)malloc(sizeof(struct node)); /*
creates new node using
data value passes as
parameter and puts its
address in the link field
of last node of the
existing list*/
if(temp->link == NULL)
{
printf("Error\n");
exit(0);
}
temp = temp->link;
temp->data = n;
temp->link = p;
}
return (p);
}
temp = p;
if(p!= NULL)
{
do
{
printf("%d\t",temp->data);
temp=temp->link;
} while (temp!= p);
}
else
printf("The list is empty\n");
}
void main()
{
int n;
int x;
struct node *start = NULL ; //initialize pointer to NULL
printf("Enter the nodes to be created \n");
scanf("%d",&n);
Explanation
1. This program uses a strategy of inserting a node in an existing list to get the list created.
An insert function is used for this.
2. The insert function takes a pointer to an existing list as the first parameter, and a data
value with which the new node is to be created as a second parameter, creates a new node
by using the data value, appends it to the end of the list, and returns a pointer to the first
node of the list.
3. Initially the list is empty, so the pointer to the starting node is NULL. Therefore, when
insert is called first time, the new node created by the insert becomes the start node.
4. Subsequently, the insert traverses the list to get the pointer to the last node of the existing
list, and puts the address of the newly created node in the link field of the last node,
thereby appending the new node to the existing list.
5. The main function reads the value of the number of nodes in the list. Calls iterate that
many times by going in a while loop to create the links with the specified number of
nodes.
Points to Remember
1. Linked lists are used when the quantity of data is not known prior to execution.
2. In linked lists, data is stored in the form of nodes and at runtime, memory is allocated for
creating nodes.
3. Due to overhead in memory allocation and deallocation, the speed of the program is
lower.