This site requires JavaScript.
It looks like you have disabled JavaScript in your browser or are using a browser that does not support JavaScript.
Please enable it or try another browser.

Ad Blocker Detected

You must disable your ad-blocking software for our web site in your browser to use this site.
You don't have to turn off the ad blocker entirely; just disable ad blocking for codestepbystep.com, then refresh this page to continue.

It is easy to disable a tool like AdBlock for just one site while leaving it enabled for other sites.
Just click the "stop sign" icon in the top-right of your browser, then un-check the "Enabled for this site" checkbox.
If your UI doesn't match the screenshot below, you may want to Google for how to add a "whitelisted domain" to your ad blocker to allow ads from codestepbystep.com to be shown.

Thank you for your understanding and helping us to keep this service free of cost for all students to use.

Note: If you are seeing this message but aren't running an ad blocker or have disabled your ad blocker:

Try clearing your browser history and refreshing the page.

Make sure you don't have any other ad-blocking software running outside of your browser, such as a HOSTS file or proxy.

If you are using a school computer network:
Many high schools have "proxy" software that blocks ads at the entire school level.
Your school's system administrator may need to add an exception for codestepbystep.com to allow these ads to get through.
You may need to copy/paste this information to your school's network administrator so that he/she can make appropriate changes to your network settings.

If you have questions or need any other assistance,
please Contact Us.

BJP4 Exercise 14.13: expunge

Write a method expunge that accepts a stack of integers as a parameter and makes sure that the stack's elements are in non-decreasing order from top to bottom, by removing from the stack any element that is smaller than any element(s) on top of it. For example, suppose a variable s stores the following elements:

bottom [4, 20, 15, 15, 8, 5, 7, 12, 3, 10, 5, 0] top

The element values 3, 7, 5, 8, and 4 should be removed because each has an element above it with a larger value. So the call of expunge(s); should change the stack to store the following elements in this order:

bottom [20, 15, 15, 12, 10, 5, 0] top

Notice that now the elements are in non-decreasing order from top to bottom. If the stack is empty or has just one element, nothing changes. You may assume that the stack passed is not null.

(Hint: An element e that should be removed is one that is smaller than some element above e. But since the elements above e are in sorted order, you may not need to examine all elements above e in order to know whether to remove e.)

Obey the following restrictions in your solution:

You may use one queue or stack (but not both) as auxiliary storage. You may not use other structures (arrays, lists, etc.), but you can have as many simple variables as you like.

Use stacks/queues in stack/queue-like ways only. Do not call index-based methods such as get, search, or set (or for-each) on a stack/queue. You may call only add, remove, push, pop, peek, isEmpty, and size.

You have access to the following two methods and may call them as needed to help you solve the problem:

If you do not understand how to solve a problem or why your solution doesn't work, please contact your TA or instructor.
If something seems wrong with the site (errors, slow performance, incorrect problems/tests, etc.), please