100题之颠倒栈

    技术2022-05-19  21

    题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。

     

    //============================================================================ // Name : 100题之颠倒栈.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include<stack> using namespace std; void AddToStackBottom(stack<int>&s, int top) { if(s.empty()) { s.push(top); return; } int top1=s.top(); s.pop(); AddToStackBottom(s, top); s.push(top1); } void reverseStack(stack<int>&s) { if(s.empty()) return; if(s.size()==1) return; int top=s.top(); s.pop(); reverseStack(s); AddToStackBottom(s, top); } int main() { stack<int>s; s.push(5); s.push(4); s.push(3); s.push(2); s.push(1); reverseStack(s); cout<<s.size()<<endl; while(!s.empty()) { cout<<s.top()<<" "; s.pop(); } return 0; }  


    最新回复(0)