Aim:
To insert a node at the end of the single linked list.
Program:
#include<stdio.h>
#include<conio.h>
#include<stdib.h>
struct slinkedlist
{
int data;
struct slinkedlist *next;
}
typedef struct slinkedlist node;
node *start = NULL;
node* getnode ()
{
node *newnode;
newnode = (node*)malloc(sizeof(node));
printf("\nEnter a data");
scanf("%d",&newnode->data);
newnode->next = NULL;
rerun newnode;
}
void creatlist (int n)
{
int i ;
node *newnode;
node *temp;
for ( i=0; i<n; i++)
{
newnode = getnode ();
if ( start == NULL)
{
start = newnode;
}
else
{
temp = start;
while( temp->next != NULL)
temp = temp->next;
temp->next = newnode;
}
}
}
void insert_beg ()
{
node *newnode;
node *temp;
newnode = getnode ();
if ( start == NULL)
{
start = newnode;
}
else
{
newnode->next = start;
start = newnode;
}
}
void insert_end ()
{
int i ;
node *newnode;
node *temp;
newnode = getnode ();
if ( start == NULL)
{
start = newnode;
}
else
{
temp = start;
while( temp->next != NULL)
temp = temp->next;
temp->next = newnode;
}
}
void main()
{
int n;
clrscr ();
if ( start == NULL )
{
printf("\n Enter Number of nodes to form single linked list:");
scanf("%d",&n);
creatlist ( int n);
}
else
printf("\n List is already created:");
printf("\n Enter 1 to insert at beginning Or Enter 2 to insert at end: ");
scanf("%d",&num)
if( num == 1)
{
insert_beg();
printf("\n a node is inserted at beginning");
}
else if( num == 2)
{
insert_end();
printf("\n a node is inserted at end");
}
else
{
printf("\n Entered a wrong choice");
}
}