input linked list is : 1->9->3->8->5->7->7
do you see any pattern in this input ?
odd placed nodes are in increasing order and even placed nodes are in decreasing order.
write a code that gives the the following linkedlist:
output linked list should be 1->3->5->7->7->8->9
?? can it be done inplace ?
SOLUTION :
#include <iostream.h>
#include <cstdio>
#include <list.h>
using namespace std;
void print(int arr[], int size)
{
list<int> li(arr,arr+size);
list<int> :: iterator it;
list<int> li1;
list<int> :: reverse_iterator it1;
cout<
//storing odd no elements in the new list and deleting the same from old list
for(it=li.begin(); it!=li.end(); it++)
{
li1.push_back(*it);
it=li.erase(it);
if(it!=li.end())
{
continue;
}
else
{
break;
}
}
//old list now contain the even places elements only and adding them from back to front in new list created above
for(it1=li.rbegin(); it1!=li.rend(); )
{
li1.push_back(*it1);
li.remove(*it1);
}
//displaying newly created list
for(it=li1.begin(); it!=li1.end(); it++)
{
cout<<*it<<" ";
}
}
int main()
{
int arr[]={1,9,3,8,5,7,7};
int arr1[]={1,9,4,6,7,3};
int arr2[]={2,5,6,4,9,3};
print(arr,sizeof(arr)/sizeof(int));
print(arr1,sizeof(arr1)/sizeof(int));
print(arr2,sizeof(arr2)/sizeof(int));
}
garima.. the question itself says you are given a linked list... using an array as you have done is actually changing the question iself !
ReplyDeleteI have taken array just to initialize the list..not for processing purpose.
DeleteWhen list is passed itself array is not needed at all.
I hope, it makes sense.