C source code for implementation of Singly linked list
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct node
{
int data ;
struct node * next;
}node;
node *create();
node *insert_b(node *head,int x);
node *insert_e(node *head,int x);
node *insert_in(node *head,int x);
node *delete_b (node *head);
node *delete_e(node *head);
node *delete_in(node *head);
void search ( node *head ) ;
void print (node *head);
void main()
{
int op,op1,x;
node *head=NULL ;
clrscr();
do
{
printf("\n1.Create\n2.Insert\n3.Delete\n4.Search");
printf("\n5.Print\n6.Quit");
printf("\n Enter your choice:");
scanf("%d",&op);
switch(op)
{
case 1 :
head=create();
break;
case 2 :
printf("\n\t1.Beginning\n\t2.End\n\t3.Intermediate");
printf("\n Enter your choice");
scanf("%d",&op1);
printf("\n Enter the data to be inserted: ");
scanf("%d",&x);
switch(op1)
{
case 1 :
head=insert_b(head,x);
break;
case 2 :
head=insert_e(head,x);
break;
case 3 :
head=insert_in ( head,x);
break;
}
break;
case 3 :
printf("\n\t1.Beginning\n\t2.End\n\t3.Intermediate");
printf("\n Enter your choice:");
scanf("%d",&op1);
switch(op1)
{
case 1 :
head=delete_b(head);
break;
case 2 :
head=delete_e(head);
break;
case 3 :
head=delete_in ( head);
break;
}
break ;
case 4 :
search (head);
break;
case 5 :
print (head);
break;
}
}while(op!=6);
}
node *create()
{
node *head,*p;
int i,n;
head=NULL;
printf("\nEnter No Of Data:");
scanf ( " %d",&n);
printf ( "\n Enter The Data:" );
for ( i=0;i<n;i++)
{
if ( head==NULL)
p=head=(node*)malloc(sizeof(node));
else
{
p->next=(node*)malloc(sizeof(node));
p=p->next;
}
p->next=NULL;
scanf("%d",&(p->data));
}
return(head);
}
node *insert_b(node *head,int x)
{
node *p;
p=(node*)malloc(sizeof(node));
p->data=x;
p->next=head;
head=p;
return(head);
}
node *insert_e(node *head, int x )
{
node *p,*q;
p=(node*)malloc(sizeof(node));
p->data=x;
p->next=NULL;
if ( head==NULL)
return (p) ;
q=head;
while(q->next!=NULL)
q=q->next;
q->next=p;
return(head);
}
node *insert_in(node *head, int x )
{
node *p , *q ;
int y;
p=(node*)malloc(sizeof(node));
p->data=x;
p->next=NULL;
printf("\nInsert After Which Number?:");
scanf("%d",&y);
for(q=head;q!=NULL&&q->data != y ;q=q->next)
;
if (q!=NULL)
{
p->next=q->next;
q->next=p;
}
else
printf("\nData Not Found." );
return (head);
}
node *delete_b(node *head)
{
node *p,*q;
if(head==NULL)
{
printf("\n Underflow.....Empty Linked List");
return (head);
}
p=head;
head=head->next;
free(p);
return(head);
}
node *delete_e( node *head)
{
node *p,*q;
if(head==NULL)
{
printf("\n Underflow.....Empty Linked List");
return (head);
}
p=head;
if ( head->next==NULL)
{
head=NULL;
free(p);
return(head);
}
q=head;
while(q->next->next!=NULL)
q=q->next;
p=q->next;
q->next=NULL;
free(p);
return(head);
}
node *delete_in(node *head)
{
node *p,*q;
int x,i;
if(head==NULL)
{
printf("\nUnderflow....Empty Linked List");
return(head);
}
printf("\nEnter the data to be deleted : ");
scanf("%d",&x);
if(head->data==x)
{
p=head;
head=head->next;
free(p);
return(head);
}
for(q=head;q->next->data!=x && q->next !=NULL;q=q->next)
if(q->next==NULL)
{
printf("\nUnderflow.....data not found");
return(head);
}
p=q->next;
q->next=q->next->next;
free(p);
return(head);
}
void search(node *head)
{
node *p;
int data,loc=1;
printf("\nEnter The Data To Be Searched: ");
scanf("%d",&data);
p=head;
while(p!=NULL && p->data != data)
{
loc++;
p=p->next;
}
if(p==NULL)
printf("\nNot Found.");
else
printf("\nFound At Location=%d",loc);
}
void print(node *head)
{
node *p;
printf("\n\n");
for(p=head;p!=NULL;p=p->next)
printf("%d ",p->data);
}
#include<conio.h>
#include<stdlib.h>
typedef struct node
{
int data ;
struct node * next;
}node;
node *create();
node *insert_b(node *head,int x);
node *insert_e(node *head,int x);
node *insert_in(node *head,int x);
node *delete_b (node *head);
node *delete_e(node *head);
node *delete_in(node *head);
void search ( node *head ) ;
void print (node *head);
void main()
{
int op,op1,x;
node *head=NULL ;
clrscr();
do
{
printf("\n1.Create\n2.Insert\n3.Delete\n4.Search");
printf("\n5.Print\n6.Quit");
printf("\n Enter your choice:");
scanf("%d",&op);
switch(op)
{
case 1 :
head=create();
break;
case 2 :
printf("\n\t1.Beginning\n\t2.End\n\t3.Intermediate");
printf("\n Enter your choice");
scanf("%d",&op1);
printf("\n Enter the data to be inserted: ");
scanf("%d",&x);
switch(op1)
{
case 1 :
head=insert_b(head,x);
break;
case 2 :
head=insert_e(head,x);
break;
case 3 :
head=insert_in ( head,x);
break;
}
break;
case 3 :
printf("\n\t1.Beginning\n\t2.End\n\t3.Intermediate");
printf("\n Enter your choice:");
scanf("%d",&op1);
switch(op1)
{
case 1 :
head=delete_b(head);
break;
case 2 :
head=delete_e(head);
break;
case 3 :
head=delete_in ( head);
break;
}
break ;
case 4 :
search (head);
break;
case 5 :
print (head);
break;
}
}while(op!=6);
}
node *create()
{
node *head,*p;
int i,n;
head=NULL;
printf("\nEnter No Of Data:");
scanf ( " %d",&n);
printf ( "\n Enter The Data:" );
for ( i=0;i<n;i++)
{
if ( head==NULL)
p=head=(node*)malloc(sizeof(node));
else
{
p->next=(node*)malloc(sizeof(node));
p=p->next;
}
p->next=NULL;
scanf("%d",&(p->data));
}
return(head);
}
node *insert_b(node *head,int x)
{
node *p;
p=(node*)malloc(sizeof(node));
p->data=x;
p->next=head;
head=p;
return(head);
}
node *insert_e(node *head, int x )
{
node *p,*q;
p=(node*)malloc(sizeof(node));
p->data=x;
p->next=NULL;
if ( head==NULL)
return (p) ;
q=head;
while(q->next!=NULL)
q=q->next;
q->next=p;
return(head);
}
node *insert_in(node *head, int x )
{
node *p , *q ;
int y;
p=(node*)malloc(sizeof(node));
p->data=x;
p->next=NULL;
printf("\nInsert After Which Number?:");
scanf("%d",&y);
for(q=head;q!=NULL&&q->data != y ;q=q->next)
;
if (q!=NULL)
{
p->next=q->next;
q->next=p;
}
else
printf("\nData Not Found." );
return (head);
}
node *delete_b(node *head)
{
node *p,*q;
if(head==NULL)
{
printf("\n Underflow.....Empty Linked List");
return (head);
}
p=head;
head=head->next;
free(p);
return(head);
}
node *delete_e( node *head)
{
node *p,*q;
if(head==NULL)
{
printf("\n Underflow.....Empty Linked List");
return (head);
}
p=head;
if ( head->next==NULL)
{
head=NULL;
free(p);
return(head);
}
q=head;
while(q->next->next!=NULL)
q=q->next;
p=q->next;
q->next=NULL;
free(p);
return(head);
}
node *delete_in(node *head)
{
node *p,*q;
int x,i;
if(head==NULL)
{
printf("\nUnderflow....Empty Linked List");
return(head);
}
printf("\nEnter the data to be deleted : ");
scanf("%d",&x);
if(head->data==x)
{
p=head;
head=head->next;
free(p);
return(head);
}
for(q=head;q->next->data!=x && q->next !=NULL;q=q->next)
if(q->next==NULL)
{
printf("\nUnderflow.....data not found");
return(head);
}
p=q->next;
q->next=q->next->next;
free(p);
return(head);
}
void search(node *head)
{
node *p;
int data,loc=1;
printf("\nEnter The Data To Be Searched: ");
scanf("%d",&data);
p=head;
while(p!=NULL && p->data != data)
{
loc++;
p=p->next;
}
if(p==NULL)
printf("\nNot Found.");
else
printf("\nFound At Location=%d",loc);
}
void print(node *head)
{
node *p;
printf("\n\n");
for(p=head;p!=NULL;p=p->next)
printf("%d ",p->data);
}
0 comments:
Post a Comment