Hello readers , this code is written in c++ and it takes two linked-list as inputs and displays a linked-list after appending one linked-list at the end of the other and sorting it . In nutshell this code sorts the elements of two lists after appending them . I have used create1 function to enter the elements in the first linked-list and create2 function to enter the elements in the second linked-list . display1 function is used to display the elements of the first linked-list and display2 function is used to display the elements of second linked-list . Let's see the sort_logic function in the function we have first appended second list at the end of the first list and sorted the larger linked-list formed . For doing ptr1 is made to point to head1 and ptr2 is made to point to head2. We reach at the end of the first linked-list , repeatedly pointing to the next node until a NULL is encountered . On reaching the node having link part as NULL , it is made to point to the head2 i.e the starting part of the second linked-list , display1() is called to display the appended list . Then we took a temporary pointer of node type and made it to point at head1 . We see that now we have two while loops performing the conditional swapping .
The outer loop selects a node and compares the data part of the node with the data parts of all other nodes . The inner loop consists of the if clause and the else clause , in if clause a check is done . If the data part of t pointer is greater than the data part of ptr1 the swapping is done else the ptr1 is made to point to the next node .
Input:-- 7->5->3->1 Input:-- 8->6->4->2 Output:- 7->5->3->1->8->6->4->2 (After appending) Output:-- 1->2->3->4->5->6->7->8 (After Sorting)
Code Snippet:--
#include<iostream>
#include<conio.h>
using namespace std;
struct node
{
int data;
node *link;
}*head1=NULL,*head2=NULL,*ptr1,*ptr2,*t;
void create1()
{
int item;
cout<<"enter the item you want to insert"<<endl;
cin>>item;
if(head1==NULL)
{
ptr1=new node;
ptr1->data=item;
ptr1->link=NULL;
head1=ptr1;
}
else
{
ptr1=new node;
ptr1->data=item;
ptr1->link=head1;
head1=ptr1;
}
}
void create2()
{
int item;
cout<<"enter the item you want to insert"<<endl;
cin>>item;
if(head2==NULL)
{
ptr2=new node;
ptr2->data=item;
ptr2->link=NULL;
head2=ptr2;
}
else
{
ptr2=new node;
ptr2->data=item;
ptr2->link=head2;
head2=ptr2;
}
}
void display1()
{
ptr1=head1;
while(ptr1!=NULL)
{
cout<<ptr1->data<<"\t";
ptr1=ptr1->link;
}
}
void display2()
{
ptr2=head2;
while(ptr2!=NULL)
{
cout<<ptr2->data<<"\t";
ptr2=ptr2->link;
}
}
void sort_logic()
{
ptr1=head1;
ptr2=head2;
while(ptr1->link!=NULL)
{
ptr1=ptr1->link;
}
ptr1->link=ptr2;
cout<<"Two list after appending"<<endl;
display1();
int temp=0;
t=head1;
while(t!=NULL)
{
ptr1=t->link;
while(ptr1!=NULL)
{
if(t->data>ptr1->data)
{
temp=t->data;
t->data=ptr1->data;
ptr1->data=temp;
ptr1=ptr1->link;
}
else
ptr1=ptr1->link;
}
t=t->link;
}
cout<<endl;
cout<<"list after sorting"<<endl;
display1();
}
int main()
{
int option;
while(option!=6)
{
cout<<endl;
cout<<"1. enter in the first list"<<endl;
cout<<"2. enter in the second list"<<endl;
cout<<"3. display the first list"<<endl;
cout<<"4. display the second list"<<endl;
cout<<"5. display the sorted list"<<endl;
cout<<"6. to exit the program"<<endl;
cout<<endl;
cin>>option;
switch(option)
{
case 1: create1();
break;
case 2: create2();
break;
case 3: display1();
break;
case 4: display2();
break;
case 5: sort_logic();
break;
}
}
getch();
return 0;
}
#include<conio.h>
using namespace std;
struct node
{
int data;
node *link;
}*head1=NULL,*head2=NULL,*ptr1,*ptr2,*t;
void create1()
{
int item;
cout<<"enter the item you want to insert"<<endl;
cin>>item;
if(head1==NULL)
{
ptr1=new node;
ptr1->data=item;
ptr1->link=NULL;
head1=ptr1;
}
else
{
ptr1=new node;
ptr1->data=item;
ptr1->link=head1;
head1=ptr1;
}
}
void create2()
{
int item;
cout<<"enter the item you want to insert"<<endl;
cin>>item;
if(head2==NULL)
{
ptr2=new node;
ptr2->data=item;
ptr2->link=NULL;
head2=ptr2;
}
else
{
ptr2=new node;
ptr2->data=item;
ptr2->link=head2;
head2=ptr2;
}
}
void display1()
{
ptr1=head1;
while(ptr1!=NULL)
{
cout<<ptr1->data<<"\t";
ptr1=ptr1->link;
}
}
void display2()
{
ptr2=head2;
while(ptr2!=NULL)
{
cout<<ptr2->data<<"\t";
ptr2=ptr2->link;
}
}
void sort_logic()
{
ptr1=head1;
ptr2=head2;
while(ptr1->link!=NULL)
{
ptr1=ptr1->link;
}
ptr1->link=ptr2;
cout<<"Two list after appending"<<endl;
display1();
int temp=0;
t=head1;
while(t!=NULL)
{
ptr1=t->link;
while(ptr1!=NULL)
{
if(t->data>ptr1->data)
{
temp=t->data;
t->data=ptr1->data;
ptr1->data=temp;
ptr1=ptr1->link;
}
else
ptr1=ptr1->link;
}
t=t->link;
}
cout<<endl;
cout<<"list after sorting"<<endl;
display1();
}
int main()
{
int option;
while(option!=6)
{
cout<<endl;
cout<<"1. enter in the first list"<<endl;
cout<<"2. enter in the second list"<<endl;
cout<<"3. display the first list"<<endl;
cout<<"4. display the second list"<<endl;
cout<<"5. display the sorted list"<<endl;
cout<<"6. to exit the program"<<endl;
cout<<endl;
cin>>option;
switch(option)
{
case 1: create1();
break;
case 2: create2();
break;
case 3: display1();
break;
case 4: display2();
break;
case 5: sort_logic();
break;
}
}
getch();
return 0;
}
No comments:
Post a Comment