Write a function to remove the item that immediately comes before in item X from an integer queue if the item X is repeated then you should remove all the items immediately comes before it don't use different data structures
Write a function to remove the item that immediately comes before in item X from an integer queue
if the item X is repeated then you should remove all the items immediately comes before it
don't use different data structures
this is the code and its output, is there a way to rephrase this code please ?
(
#include<iostream>
#include<queue>
using namespace std;
void fill(queue<int>&q,int z)
{
for(int i=0; i<z; i++)
q.push(rand()% 20+1);
}
void print(queue<int> q)
{
int item;
while(!q.empty())
{
item =q.front();
cout<<item<<"\t";
q.pop();
}
cout<<endl<<endl;
}
void removeBefore(queue<int> &q, int x)
{
queue<int>temp;
int item ,prev;
while(!q.empty())
{
prev =q.front();
q.pop();
int c= q.size();
if(q.empty())
{
q.push(prev);
break;
}
item =q.front();
if(item != x)
temp.push(prev);
if(c == 1)
{
q.pop();
temp.push(item);
}
}
while(!temp.empty())
{
item = temp.front();
q.push(item);
temp.pop();
}
}
main()
{
queue<int>q;
fill(q, 10);
print(q);
int x;
cout<<"please enter the item that you want to remove:"<<endl;
cin>>x;
removeBefore(q, x);
print(q);
}
)
Step by step
Solved in 3 steps with 1 images