Can anyone explain or solve this question? It\'s a C++ data structures question
ID: 3850055 • Letter: C
Question
Can anyone explain or solve this question?
It's a C++ data structures question
must use the stack operators in the program (top(), pop(), push(x)....)
that changes a stack so that all Question 2: write the body of t user function m of the stack, while the order of occurrences of the smallest item the other items remains the same For example, the stack (4,3,2,5,8,2,4] (where the top item is the first) will be changed into [4,3,5,8,4,2,2]mp marks) fte a zlems on void minBottom (StackType& stack) Sack Compare buen zam untill a null 23 n Posh Samia be announ mk, aant) op znulL n underflow.Explanation / Answer
void minBottom(StackType &stack) {
StackType tempStack;
while(!stack.isEmpty()) {
// popped item from main stack
StackItem item = stack.pop();
if(tempStack.isEmpty()) {
tempStack.push(item);
} else {
// temp stack has some element
// check if top element of temporary stack is less than popped element from main stack
if(item < tempStack.top()) {
// taking a temporary stack to shift all the mimimum elements on the tempStack
// and then insert the current popped element there.
StackType stackToShift;
StackItem minItem = tempStack.top();
// remove all the elements which are the smallest and on top
// of tempStack. Then we will insert our main stack popped element
// and again one by one fetch elements from stackToShift to tempStack
while(!tempStack.isEmpty() && tempStack.top() == minItem) {
stackToShift.push(tempStack.pop());
}
// now insert main popped element
tempStack.push(item);
// again get the minimum elements from shifting stack
while(!stackToShift.isEmpty()) {
tempStack.push(stackToShift.pop());
}
}
}
}
// Now tempStack contains all the node in proper order,
// that is the top node is lowest
// so again build main stack from tempStack
while(!tempStack.isEmpty()) {
stack.push(tempStack.pop());
}
}