亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++使用遞歸函數(shù)和棧操作逆序一個(gè)棧的算法示例

 更新時(shí)間:2017年05月10日 11:20:11   作者:難免有錯(cuò)_  
這篇文章主要介紹了C++使用遞歸函數(shù)和棧操作逆序一個(gè)棧的算法,結(jié)合實(shí)例形式分析了C++遞歸函數(shù)與逆序棧的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了C++使用遞歸函數(shù)和棧操作逆序一個(gè)棧的算法。分享給大家供大家參考,具體如下:

題目:

一個(gè)棧依次壓入1、2、3、4、5,那么棧頂?shù)綏5追謩e為:5、4、3、2、1。
將這個(gè)棧逆置后棧頂?shù)綏5追謩e為1、2、3、4、5。
用遞歸函數(shù)來(lái)實(shí)現(xiàn),不能用其他數(shù)據(jù)結(jié)構(gòu)。

解題思路及代碼

1、遞歸函數(shù)一:將棧的棧底元素一個(gè)個(gè)返回并移除。
2、遞歸函數(shù)二:逆序棧,調(diào)用遞歸函數(shù)一實(shí)現(xiàn)。

C++實(shí)現(xiàn):

class Solution
{
public:
  //遞歸函數(shù)一
  static int getAndRemoveStackLastElem(stack<int>& s)
  {
    int result = s.top();
    s.pop();
    if (s.empty())
      return result;
    else
    {
      int last = getAndRemoveStackLastElem(s);
      s.push(result);
      return last;
    }
  }
  //遞歸函數(shù)二
  static void reverseStack(stack<int>& s)
  {
    if (s.empty())
      return;
    int i = getAndRemoveStackLastElem(s);
    reverseStack(s);
    s.push(i);
  }
};

程序測(cè)試用例:

#include <iostream>
#include <stack>
using namespace std;
class Solution
{
public:
  static int getAndRemoveStackLastElem(stack<int>& s)
  {
    int result = s.top();
    s.pop();
    if (s.empty())
      return result;
    else
    {
      int last = getAndRemoveStackLastElem(s);
      s.push(result);
      return last;
    }
  }
  static void reverseStack(stack<int>& s)
  {
    if (s.empty())
      return;
    int i = getAndRemoveStackLastElem(s);
    reverseStack(s);
    s.push(i);
  }
};
//打印棧
void show(stack<int> s)
{
  while (!s.empty())
  {
    cout << s.top() << " ";
    s.pop();
  }
  cout << endl;
}
int main()
{
  stack<int> s;
  s.push(1);
  s.push(2);
  s.push(3);
  s.push(4);
  s.push(5);
  s.push(6);
  cout << "Before reverse: " << endl;
  show(s);
  cout << "After reverse: " << endl;
  Solution::reverseStack(s);
  show(s);
  system("pause");
}

運(yùn)行結(jié)果:

Before reverse:
6 5 4 3 2 1
After reverse:
1 2 3 4 5 6
請(qǐng)按任意鍵繼續(xù). . .

希望本文所述對(duì)大家C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論