Java Program to insert an element at the Bottom of a Stack
A stack is a data structure that follows the LIFO (Last In, First Out) principle. In other words, The last element we add to a stack is the first one to be removed. When we add (or push) elements to a stack, they are placed on top; i.e. above all the previously-added elements.
There may be certain scenarios where we need to add an element at the bottom of the stack. There are multiple ways to add an element to the bottom of the stack. they are −
- Using Auxiliary Stack
- Using Recursion
- Using temporary variable
- Using a Queue
Using Auxiliary Stack
We can insert an element at the bottom of a stack using an auxiliary stack (a secondary stack using which we will perform operations) in Java. Here, we will use two stacks (a main stack and an auxiliary stack) to insert an element at the bottom of the main stack.
The main stack will have the original elements, while the auxiliary stack will help us to rearrange the elements. This method is easy to understand.
Steps
Following are the steps to insert an element at the bottom of a stack using an auxiliary stack:
- Initialize Two Stacks: Create a main stack push some elements in it and then create an auxiliary stack.
- Pop All Elements: Then remove all elements from the main stack and push them into the second auxiliary stack. This will help us to reverse the order of elements.
- Push the New Element: Once the main stack is empty, we need to push the new element into the main stack or you can also push the element on top of the auxiliary stack if you want.
- Restore the Original Order: Pop all elements from the auxiliary stack and push them back into the main stack. This will restore the original order of elements.
Example
Following is an example of how we can use an auxiliary stack to add an element at the bottom −
import java.util.Stack; public class InsertAtBottomUsingTwoStacks { public static void insertElementAtBottom(Stack<Integer> mainStack, int x) { // Create an extra auxiliary stack Stack<Integer> St2 = new Stack<>(); /* Step 1: Pop all elements from the main stack and push them into the auxiliary stack */ while (!mainStack.isEmpty()) { St2.push(mainStack.pop()); } // Step 2: Push the new element into the main stack mainStack.push(x); /* Step 3: Restore the original order by popping each element from the auxiliary stack and push back to main stack */ while (!St2.isEmpty()) { mainStack.push(St2.pop()); } } public static void main(String[] args) { Stack<Integer> stack1 = new Stack<>(); stack1.push(1); stack1.push(2); stack1.push(3); stack1.push(4); System.out.println("Original Stack: " + stack1); insertElementAtBottom(stack1, 0); System.out.println("Stack after inserting 0 at the bottom: " + stack1); } }
In the program above, we start by pushing the elements 1, 2, 3, and 4 into the stack. Then, we transfer these elements to another stack. After that, we insert the target element into the main stack. Finally, we retrieve all the elements back from the auxiliary stack.
Using Recursion
Recursion is one other way to insert an element at the bottom of a stack. In this approach, we will use a recursive function to pop all the elements from our stack until it becomes empty, and once it becomes empty we will insert the new element into the stack, and then push the elements back into the stack.
Steps
Here are the steps to insert an element at the bottom of a stack using recursion:
- Base Case: Check if the stack is empty. If it is empty, we will push the new element into the stack.
- Recursive Case: If the stack is not empty, we will pop the top element and call the function recursively.
- Restore Elements: After we are done with inserting the new element, we need to push the previously popped elements back into the stack.
Example
import java.util.Stack; public class InsertAtBottomUsingTwoStacks { public static void insertElementAtBottom(Stack<Integer> mainStack, int x) { // Create an extra auxiliary stack Stack<Integer> St2 = new Stack<>(); /* Step 1: Pop all elements from the main stack and push them into the auxiliary stack */ while (!mainStack.isEmpty()) { St2.push(mainStack.pop()); } // Step 2: Push the new element into the main stack mainStack.push(x); /* Step 3: Restore the original order by popping each element from the auxiliary stack and push back to main stack */ while (!St2.isEmpty()) { mainStack.push(St2.pop()); } } public static void main(String[] args) { Stack<Integer> stack1 = new Stack<>(); stack1.push(1); stack1.push(2); stack1.push(3); stack1.push(4); System.out.println("Original Stack: " + stack1); insertElementAtBottom(stack1, 0); System.out.println("Stack after inserting 0 at the bottom: " + stack1); } }
In the above program, we defined a recursive function that inserts a new element at the bottom of the stack, we then continued to pop the elements from the stack until the stack became empty, then we inserted the new element and after that, we restored the previous elements into the stack.
Using Temporary Variable
We can also achieve the given task using a temporary variable. We use this variable to store the elements while we manipulate the stack. This method is easy and we can implement using a simple loop.
Steps
Following are the steps to insert an element at the bottom of a stack using a temporary variable <
- Initialize a Temporary Variable: Create a variable to temporarily hold the elements as you iterate through the stack.
- Transfer Elements: Then use a loop to pop elements from the stack and store those elements in the temporary variable.
- Insert New Element: Once our stack is empty, then we need to push the new element into the stack.
- Restore Elements: After inserting the element, push the elements from the temporary variable back into the stack.
Example
import java.util.Stack; public class InsertAtBottomUsingRecursion { public static void insertAtElementBottom(Stack<Integer> st, int x) { // Base case: If the stack is empty, push the new element if (st.isEmpty()) { st.push(x); return; } // Recursive case: Pop the top element int top = st.pop(); // Call the function recursively insertAtElementBottom(st, x); // Restore the top element into the stack st.push(top); } public static void main(String[] args) { Stack<Integer> st = new Stack<>(); st.push(1); st.push(2); st.push(3); st.push(4); System.out.println("Original Stack: " + st); insertAtElementBottom(st, 0); System.out.println("Stack after inserting 0 at the bottom: " + st); } }
In this program, we used a temporary array to hold the elements while manipulating the stack. We then insert the new element into the stack and restore the original elements into the stack.
Using a Queue
In this approach, we will use a queue to hold the elements temporarily while inserting a new element at the bottom of the stack. This method is the better way to manage the order of elements. Using a Queue we can a new element to a stack without tampering with the existing elements.
Steps
Following are the steps to insert an element at the bottom of a stack using a queue −
- Initialize a Queue: Create a queue to hold the elements from the stack.
- Transfer Elements: Pop the elements from the stack and enqueue them into the queue.
- Insert New Element: Push the new element into the stack.
- Restore Elements: Dequeue the elements from the queue and push them back into the stack.
Example
import java.util.Stack; public class InsertAtBottomUsingTempVar { public static void insertAtElementBottom(Stack<Integer> st, int x) { // Temporary variable to hold elements int[] temp = new int[st.size()]; int index = 0; // Transfer elements to temporary variable while (!st.isEmpty()) { temp[index++] = st.pop(); } // Push the new element into the stack st.push(x); // Restore elements from temporary variable for (int i = 0; i < index; i++) { st.push(temp[i]); } } public static void main(String[] args) { Stack<Integer> st = new Stack<>(); st.push(1); st.push(2); st.push(3); st.push(4); System.out.println("Original Stack: " + st); insertAtElementBottom(st, 0); System.out.println("Stack after inserting 0 at the bottom: " + st); } }
Output
Following is the output of the above code −
import java.util.Stack; public class InsertAtBottomUsingTwoStacks { public static void insertElementAtBottom(Stack<Integer> mainStack, int x) { // Create an extra auxiliary stack Stack<Integer> St2 = new Stack<>(); /* Step 1: Pop all elements from the main stack and push them into the auxiliary stack */ while (!mainStack.isEmpty()) { St2.push(mainStack.pop()); } // Step 2: Push the new element into the main stack mainStack.push(x); /* Step 3: Restore the original order by popping each element from the auxiliary stack and push back to main stack */ while (!St2.isEmpty()) { mainStack.push(St2.pop()); } } public static void main(String[] args) { Stack<Integer> stack1 = new Stack<>(); stack1.push(1); stack1.push(2); stack1.push(3); stack1.push(4); System.out.println("Original Stack: " + stack1); insertElementAtBottom(stack1, 0); System.out.println("Stack after inserting 0 at the bottom: " + stack1); } }
In this implementation, we used a queue to hold the elements for a temporary time. We first transfer the existing elements from the stack to the queue. Then, we push the new element into the stack and restore the original elements from the queue back to the stack
Note: We can use other data structures such as Array, LinkedList, ArrayList, etc. instead of a queue.
The above is the detailed content of Java Program to insert an element at the Bottom of a Stack. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

Java is a popular programming language that can be learned by both beginners and experienced developers. This tutorial starts with basic concepts and progresses through advanced topics. After installing the Java Development Kit, you can practice programming by creating a simple "Hello, World!" program. After you understand the code, use the command prompt to compile and run the program, and "Hello, World!" will be output on the console. Learning Java starts your programming journey, and as your mastery deepens, you can create more complex applications.

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.
