栈的逆转(递归实现)
生活随笔
收集整理的這篇文章主要介紹了
栈的逆转(递归实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
棧的逆轉(Reversal)
Stack的逆轉,一般的話,會是用另外一個棧,或者是隊列完成逆轉。
但在要求只能用遞歸實現的時候,就需要了這些東西。
代碼如下
歡迎討論-Sean
#include <iostream> #include <stack> using namespace std;void help_reversal(stack<int> &s, int top_num,int level) {if (s.size() == level) {s.push(top_num);return;}int num = s.top();s.pop();help_reversal(s,top_num,level);s.push(num); }void reversal(stack<int> &s, int n) {for (int i = 0; i < n - 1; ++i) {int num = s.top();s.pop();help_reversal(s , num, i); } }int main(){int n,t ;cin >> n;stack<int> s;for (int i = 0; i < n; ++i) {cin >> t;s.push(t);}reversal(s,n);for (int i = 0; i < n; ++i) {cout << s.top()<<" ";s.pop();} }總結
以上是生活随笔為你收集整理的栈的逆转(递归实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法题:水洼有多少(C++)
- 下一篇: 自定义模板类(循环队列)