从下往上打印堆栈元素
原文:https://www . geesforgeks . org/print-stack-elements-自下而上/
给定一个堆栈,任务是从底部到顶部打印堆栈的元素,这样元素仍然存在于堆栈中,而它们在堆栈中的顺序不会改变。
示例:
Input :
| 4 |
| 3 |
| 2 |
| 1 |
|________|
Output :1 2 3 4
方法 1(递归):思路是弹出栈的元素,调用递归函数 PrintStack。一旦堆栈变空,开始打印最后弹出的元素,最后弹出的元素是最底部的元素。因此,元素将从下往上打印。现在推回被打印的元素,这将保持元素在堆栈中的顺序。
下面是上述方法的实现:
C++
// C++ program to print the elements of a
// stack from bottom to top
#include <bits/stdc++.h>
using namespace std;
// Recursive function to print stack elements
// from bottom to top without changing
// their order
void PrintStack(stack<int> s)
{
// If stack is empty then return
if (s.empty())
return;
int x = s.top();
// Pop the top element of the stack
s.pop();
// Recursively call the function PrintStack
PrintStack(s);
// Print the stack element starting
// from the bottom
cout << x << " ";
// Push the same element onto the stack
// to preserve the order
s.push(x);
}
// Driver code
int main()
{
// Stack s
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
s.push(4);
PrintStack(s);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to print the elements of a
// stack from bottom to top
import java.util.*;
class GfG
{
// Recursive function to print stack elements
// from bottom to top without changing
// their order
static void PrintStack(Stack<Integer> s)
{
// If stack is empty then return
if (s.isEmpty())
return;
int x = s.peek();
// Pop the top element of the stack
s.pop();
// Recursively call the function PrintStack
PrintStack(s);
// Print the stack element starting
// from the bottom
System.out.print(x + " ");
// Push the same element onto the stack
// to preserve the order
s.push(x);
}
// Driver code
public static void main(String[] args)
{
// Stack s
Stack<Integer> s = new Stack<Integer> ();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
PrintStack(s);
}
}
// This code is contributed by Prerna Saini.
Python 3
# Python3 program to print the elements of a
# stack from bottom to top
# Stack class with all functionality of a stack
import sys
class Stack:
def __init__(self):
self.s = []
def push(self, data):
self.s.append(data)
def pop(self):
return self.s.pop()
def peek(self):
return self.s[-1]
def count(self):
return len(self.s)
# Recursive function to print stack elements
# from bottom to top without changing
# their order
def printStack(s):
# if stack is empty then simply return
if s.count() == 0:
return
x = s.peek()
# pop top most element of the stack
s.pop()
# recursively call the function printStack
printStack(s)
# Print the stack element starting
# from the bottom
print("{} ".format(x), end = "")
# Push the same element onto the stack
# to preserve the order
s.push(x)
# Driver code
if __name__=='__main__':
s=Stack()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
printStack(s)
# This code is contributed by Vikas Kumar
C
// C# program to print the elements of a
// stack from bottom to top
using System;
using System.Collections.Generic;
class GfG
{
// Recursive function to print stack elements
// from bottom to top without changing
// their order
static void PrintStack(Stack<int> s)
{
// If stack is empty then return
if (s.Count == 0)
return;
int x = s.Peek();
// Pop the top element of the stack
s.Pop();
// Recursively call the function PrintStack
PrintStack(s);
// Print the stack element starting
// from the bottom
Console.Write(x + " ");
// Push the same element onto the stack
// to preserve the order
s.Push(x);
}
// Driver code
public static void Main()
{
// Stack s
Stack<int> s = new Stack<int> ();
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
PrintStack(s);
}
}
/* This code contributed by PrinciRaj1992 */
java 描述语言
<script>
// Javascript program to print the elements
// of a stack from bottom to top
// Recursive function to print stack
// elements from bottom to top without
// changing their order
function PrintStack(s)
{
// If stack is empty then return
if (s.length == 0)
return;
var x = s[s.length - 1];
// Pop the top element of the stack
s.pop();
// Recursively call the function PrintStack
PrintStack(s);
// Print the stack element starting
// from the bottom
document.write(x + " ");
// Push the same element onto the stack
// to preserve the order
s.push(x);
}
// Driver code
// Stack s
var s = [];
s.push(1);
s.push(2);
s.push(3);
s.push(4);
PrintStack(s);
// This code is contributed by importantly
</script>
Output:
1 2 3 4
时间复杂度:O(N) T3】辅助空间: O(N)
方法 2(使用另一个堆栈):想法是将每个元素推入另一个临时堆栈,然后打印临时堆栈的元素。
C++
// C++ program to print the elements of a
// stack from bottom to top
#include <bits/stdc++.h>
using namespace std;
// Recursive function to print stack elements
// from bottom to top without changing
// their order
void PrintStack(stack<int> s)
{
stack<int> temp;
while (s.empty() == false)
{
temp.push(s.top());
s.pop();
}
while (temp.empty() == false)
{
int t = temp.top();
cout << t << " ";
temp.pop();
// To restore contents of
// the original stack.
s.push(t);
}
}
// Driver code
int main()
{
// Stack s
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
s.push(4);
PrintStack(s);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to print the
// elements of a stack from
// bottom to top
import java.util.*;
class Main{
// Recursive function to print
// stack elements from bottom
// to top without changing
// their order
public static void PrintStack(Stack<Integer> s)
{
Stack<Integer> temp = new Stack<Integer>();
while (s.empty() == false)
{
temp.push(s.peek());
s.pop();
}
while (temp.empty() == false)
{
int t = temp.peek();
System.out.print(t + " ");
temp.pop();
// To restore contents of
// the original stack.
s.push(t);
}
}
// Driver code
public static void main(String[] args)
{
// Stack s
Stack<Integer> s = new Stack<Integer>();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
PrintStack(s);
}
}
// This code is contributed by divyeshrabadiya07
Python 3
# Python3 program to print the elements of a
# stack from bottom to top
# Stack class with all functionality of a stack
import sys
class Stack:
def __init__(self):
self.s = []
def push(self, data):
self.s.append(data)
def pop(self):
return self.s.pop()
def peek(self):
return self.s[-1]
def count(self):
return len(self.s)
# Recursive function to print stack elements
# from bottom to top without changing
# their order
def printStack(s):
temp = Stack()
while(s.count() > 0):
temp.push(s.peek())
s.pop()
while(temp.count() > 0):
t = temp.peek()
print("{} " . format(temp.peek()), end = "")
temp.pop()
# Restore the contents of original stack
s.push(t)
# Driver code
if __name__=='__main__':
s = Stack()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
printStack(s)
# This code is contributed by Vikash Kumar 37
C
// C# program to print the elements of
// a stack from bottom to top
using System;
using System.Collections;
class GFG{
// Recursive function to print stack
// elements from bottom to top without
// changing their order
static void PrintStack(Stack s)
{
Stack temp = new Stack();
while (s.Count != 0)
{
temp.Push(s.Peek());
s.Pop();
}
while (temp.Count != 0)
{
int t = (int)temp.Peek();
Console.Write(t + " ");
temp.Pop();
// To restore contents of
// the original stack.
s.Push(t);
}
}
// Driver Code
public static void Main(string[] args)
{
// Stack s
Stack s = new Stack();
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
PrintStack(s);
}
}
// This code is contributed by rutvik_56
java 描述语言
<script>
// JavaScript program to print the elements of a
// stack from bottom to top
// Recursive function to print stack elements
// from bottom to top without changing
// their order
function PrintStack(s)
{
var temp = [];
while (s.length!=0)
{
temp.push(s[s.length-1]);
s.pop();
}
while (temp.length!=0)
{
var t = temp[temp.length-1];
document.write( t + " ");
temp.pop();
// To restore contents of
// the original stack.
s.push(t);
}
}
// Driver code
// Stack s
var s = [];
s.push(1);
s.push(2);
s.push(3);
s.push(4);
PrintStack(s);
</script>
Output:
1 2 3 4
时间复杂度:O(N) T3】辅助空间: O(N)
版权属于:月萌API www.moonapi.com,转载请注明出处