DOWNLOAD FULL PROGRAME
CODING:
#CREATE A LIST
struct node *create(struct node *start)
{
struct node *new_node;
int num,n;
printf("\nHOW MANY ENTER THE RECORD IN LIST
:");
scanf("%d",&n);
do
{
printf("Enter the number:");
scanf("%d",&num);
if(start==NULL)
{
start=(struct node *)malloc(sizeof(struct node *));
start->prev=NULL;
start->data=num;
start->next=NULL;
count++;
n--;
}
else
{
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->prev=NULL;
new_node->data=num;
new_node->next=start;
start->prev=new_node;
start=new_node;
count++;
n--;
}
}while(0<n);
return start;
}
#INSERT AT FIRST
struct node *insert_beg(struct node *start)
{
struct node *new_node;
int num;
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
start->prev=new_node;
new_node->prev=NULL;
new_node->data=num;
new_node->next=start;
start=new_node;
count++;
return start;
}
#INSERT AT LAST
struct node *insert_end(struct node *start)
{
int num;
struct node *ptr,*new_node;
ptr=start;
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=new_node;
new_node->next=NULL;
count++;
return start;
}
#INSERT AT SPECIFIED LOCATION(BEFORE,AFTER,ANY THE NODE)
#BEFORE
struct node *insert_before(struct node *start)
{
struct node *new_node,*ptr;
int num,n;
ptr=start;
printf("\nEnter The Before Number of Added In List:");
scanf("%d",&n);
if(ptr->data==n)
{
start=insert_beg(start);
}
else
{
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
while(ptr->data!=n)
ptr=ptr->next;
new_node->next=ptr;
ptr->prev->next=new_node;
ptr->prev=new_node;
}
return start;
}
#ANY
struct node *insert_node(struct node *start)
{
struct node *new_node,*ptr;
int num,n;
ptr=start;
printf("Enter The Position You Want To Added:");
scanf("%d",&n);
if(n==1)
{
start=insert_beg(start);
}
else
{
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
while(2<n)
{
ptr=ptr->next;
n--;
}
new_node->prev=ptr;
new_node->next=ptr->next;
ptr->next->prev=new_node;
ptr->next=new_node;
}
return start;
}
#AFTER
struct node *insert_after(struct node *start)
{
struct node *new_node,*ptr;
int num,n;
printf("Enter The Number:");
scanf("%d",&num);
printf("\nEnter The After Number of Added In List:");
scanf("%d",&n);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
ptr=start;
while(ptr->data!=n)
ptr=ptr->next;
new_node->prev=ptr;
new_node->next=ptr->next;
ptr->next->prev=new_node;
ptr->next=new_node;
return start;
}
#DELETE FROM FIRST
struct node *delete_beg(struct node *start)
{
struct node *ptr;
ptr=start;
start=start->next;
free(ptr);
count--;
return start;
}
#DELETE FROM LAST:
struct node *delete_end(struct node *start)
{
struct node *ptr,*preptr;
ptr=start;
while(ptr->next!=NULL)
{
preptr=ptr;
ptr=ptr->next;
}
preptr->next=NULL;
free(ptr);
count--;
return start;
}
#DELETE ANY SPECIFIED NODE
struct node *delete_node(struct node *start)
{
struct node *ptr,*preptr;
int num;
printf("Enter The Number:");
scanf("%d",&num);
ptr=start;
if(ptr->data==num)
{
start=delete_beg(start);
return start;
}
else
while(ptr->data!=num)
{
preptr=ptr;
ptr=ptr->next;
}
preptr->next=ptr->next;
free(ptr);
count--;
return start;
}
#TRAVERSAL
struct node *display(struct node *start)
{
struct node *ptr;
ptr=start;
printf("LIST OPEN...");
while(ptr!=NULL)
{
printf("\n%d",ptr->data);
ptr=ptr->next;
}
return start;
}
struct node *count_op(struct node *start)
{
struct node *ptr;
int odd=0,even=0;
ptr=start;
while(ptr!=NULL)
{
if(ptr->data%2==0)
{
printf("\nEVEN:%d",ptr->data);even++;
}
else
{
printf("\nODD :%d",ptr->data);odd++;
}
ptr=ptr->next;
}
printf("\nEVEN Number of Nodes:%d",even);
printf("\nODD Number of Nodes:%d",odd);
printf("\nTotal Number Of Nodes:%d",count);
return start;
}
CODING:
#CREATE A LIST
struct node *create(struct node *start)
{
struct node *new_node;
int num,n;
printf("\nHOW MANY ENTER THE RECORD IN LIST
:");
scanf("%d",&n);
do
{
printf("Enter the number:");
scanf("%d",&num);
if(start==NULL)
{
start=(struct node *)malloc(sizeof(struct node *));
start->prev=NULL;
start->data=num;
start->next=NULL;
count++;
n--;
}
else
{
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->prev=NULL;
new_node->data=num;
new_node->next=start;
start->prev=new_node;
start=new_node;
count++;
n--;
}
}while(0<n);
return start;
}
#INSERT AT FIRST
struct node *insert_beg(struct node *start)
{
struct node *new_node;
int num;
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
start->prev=new_node;
new_node->prev=NULL;
new_node->data=num;
new_node->next=start;
start=new_node;
count++;
return start;
}
#INSERT AT LAST
struct node *insert_end(struct node *start)
{
int num;
struct node *ptr,*new_node;
ptr=start;
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=new_node;
new_node->next=NULL;
count++;
return start;
}
#INSERT AT SPECIFIED LOCATION(BEFORE,AFTER,ANY THE NODE)
#BEFORE
struct node *insert_before(struct node *start)
{
struct node *new_node,*ptr;
int num,n;
ptr=start;
printf("\nEnter The Before Number of Added In List:");
scanf("%d",&n);
if(ptr->data==n)
{
start=insert_beg(start);
}
else
{
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
while(ptr->data!=n)
ptr=ptr->next;
new_node->next=ptr;
ptr->prev->next=new_node;
ptr->prev=new_node;
}
return start;
}
#ANY
struct node *insert_node(struct node *start)
{
struct node *new_node,*ptr;
int num,n;
ptr=start;
printf("Enter The Position You Want To Added:");
scanf("%d",&n);
if(n==1)
{
start=insert_beg(start);
}
else
{
printf("Enter The Number:");
scanf("%d",&num);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
while(2<n)
{
ptr=ptr->next;
n--;
}
new_node->prev=ptr;
new_node->next=ptr->next;
ptr->next->prev=new_node;
ptr->next=new_node;
}
return start;
}
#AFTER
struct node *insert_after(struct node *start)
{
struct node *new_node,*ptr;
int num,n;
printf("Enter The Number:");
scanf("%d",&num);
printf("\nEnter The After Number of Added In List:");
scanf("%d",&n);
new_node=(struct node *)malloc(sizeof(struct node *));
new_node->data=num;
ptr=start;
while(ptr->data!=n)
ptr=ptr->next;
new_node->prev=ptr;
new_node->next=ptr->next;
ptr->next->prev=new_node;
ptr->next=new_node;
return start;
}
#DELETE FROM FIRST
struct node *delete_beg(struct node *start)
{
struct node *ptr;
ptr=start;
start=start->next;
free(ptr);
count--;
return start;
}
#DELETE FROM LAST:
struct node *delete_end(struct node *start)
{
struct node *ptr,*preptr;
ptr=start;
while(ptr->next!=NULL)
{
preptr=ptr;
ptr=ptr->next;
}
preptr->next=NULL;
free(ptr);
count--;
return start;
}
#DELETE ANY SPECIFIED NODE
struct node *delete_node(struct node *start)
{
struct node *ptr,*preptr;
int num;
printf("Enter The Number:");
scanf("%d",&num);
ptr=start;
if(ptr->data==num)
{
start=delete_beg(start);
return start;
}
else
while(ptr->data!=num)
{
preptr=ptr;
ptr=ptr->next;
}
preptr->next=ptr->next;
free(ptr);
count--;
return start;
}
#TRAVERSAL
struct node *display(struct node *start)
{
struct node *ptr;
ptr=start;
printf("LIST OPEN...");
while(ptr!=NULL)
{
printf("\n%d",ptr->data);
ptr=ptr->next;
}
return start;
}
#SORTING
struct node *sort(struct node *start)
#COUNTING OPERATIONS:( TOTAL NO. OF NODES, EVEN AND ODD NO. OF NODES)
{
struct node *ptr1,*ptr2;
int temp;
ptr1=start;
while(ptr1->next!=NULL)
{
ptr2=ptr1->next;
while(ptr2!=NULL)
{
if(ptr1->data>ptr2->data)
{
temp=ptr1->data;
ptr1->data=ptr2->data;
ptr2->data=temp;
}
ptr2=ptr2->next;
}
ptr1=ptr1->next;
}
return start;
}
#SPLITTING
struct node *split(struct node *start)
{
int i;
struct node *s;
if(flag==0)
{
printf("Enter The Position of Split:");
scanf("%d",&i);
s=start;
while(i>1)
{
s=s->next;
i--;
}
splitlist=s->next;
splitlist->prev=NULL;
s->next=NULL;
s=start;
flag=1;
printf("\n->Your List is Splitted.");
}
else{printf("SORRY,Your List is Already Splitted");}
return start;
}
#MERGING
struct node *merge(struct node *start)
{
struct node *ptr;
ptr=start;
if(flag==0)
{
printf("SORRY,You have note Splitted List.");
}
else
{
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=splitlist;
splitlist->prev=ptr;
flag=0;
printf("->Your List Merged.");
}
return start;
}
#SPLITTING
struct node *split(struct node *start)
{
int i;
struct node *s;
if(flag==0)
{
printf("Enter The Position of Split:");
scanf("%d",&i);
s=start;
while(i>1)
{
s=s->next;
i--;
}
splitlist=s->next;
splitlist->prev=NULL;
s->next=NULL;
s=start;
flag=1;
printf("\n->Your List is Splitted.");
}
else{printf("SORRY,Your List is Already Splitted");}
return start;
}
#MERGING
struct node *merge(struct node *start)
{
struct node *ptr;
ptr=start;
if(flag==0)
{
printf("SORRY,You have note Splitted List.");
}
else
{
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=splitlist;
splitlist->prev=ptr;
flag=0;
printf("->Your List Merged.");
}
return start;
}
struct node *count_op(struct node *start)
{
struct node *ptr;
int odd=0,even=0;
ptr=start;
while(ptr!=NULL)
{
if(ptr->data%2==0)
{
printf("\nEVEN:%d",ptr->data);even++;
}
else
{
printf("\nODD :%d",ptr->data);odd++;
}
ptr=ptr->next;
}
printf("\nEVEN Number of Nodes:%d",even);
printf("\nODD Number of Nodes:%d",odd);
printf("\nTotal Number Of Nodes:%d",count);
return start;
}
Comments
Post a Comment