Friday, 31 October 2014

Single Linked List - inserting a node at the end

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");
}
}

No comments:

Post a Comment