最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

題目:

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

解題思路及代碼

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

C++實現(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);
  }
};

程序測試用例:

#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");
}

運行結(jié)果:

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

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

相關(guān)文章

  • C++編程中break語句和continue語句的學(xué)習(xí)教程

    C++編程中break語句和continue語句的學(xué)習(xí)教程

    這篇文章主要介紹了C++編程中break語句和continue語句的學(xué)習(xí)教程,break和continue是C++循環(huán)控制中的基礎(chǔ)語句,需要的朋友可以參考下
    2016-01-01
  • C++ 空指針解引用的解決方法

    C++ 空指針解引用的解決方法

    空指針解引用是一種常見且嚴重的錯誤,它通常由于指針未初始化、被設(shè)置為nullptr或指向無效地址引起,本文主要介紹了C++ 空指針解引用的解決方法,感興趣的可以了解一下
    2024-08-08
  • C++從匯編的視角審視對象的創(chuàng)建問題

    C++從匯編的視角審視對象的創(chuàng)建問題

    這篇文章主要介紹了C++從匯編的視角看對象的創(chuàng)建,從匯編的視角來看,調(diào)用構(gòu)造器和調(diào)用 “返回對象” 的函數(shù)是一樣的,從匯編的角度來看,對象就是一堆數(shù)據(jù)的排列,比如說最普通的對象就是數(shù)據(jù)成員按照聲明順序直接排列,需要的朋友可以參考下
    2022-01-01
  • C++中實現(xiàn)WebSocket通信的兩種方法:libwebsockets庫、Boost.Beast?庫

    C++中實現(xiàn)WebSocket通信的兩種方法:libwebsockets庫、Boost.Beast?庫

    C++中WebSocket庫主要有以下幾個?:cpp-websocket?、asio_websocket?、websockets++?、?websocketpp?、?libwebsockets?、?uWebSockets?、Boost.Beast?、Simple-WebSocket-Server?,這篇文章使用libwebsockets庫、Boost.Beast?庫來實現(xiàn)c++中的WebSocket通信
    2025-01-01
  • C語言實現(xiàn)影院售票管理系統(tǒng)

    C語言實現(xiàn)影院售票管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)影院售票管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++ 輸入一行數(shù)字(含負數(shù))存入數(shù)組中的案例

    C++ 輸入一行數(shù)字(含負數(shù))存入數(shù)組中的案例

    這篇文章主要介紹了C++ 輸入一行數(shù)字(含負數(shù))存入數(shù)組中的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C++二進制翻轉(zhuǎn)實例分析

    C++二進制翻轉(zhuǎn)實例分析

    這篇文章主要介紹了C++二進制翻轉(zhuǎn),通過幾個實例分析二進制翻轉(zhuǎn)算法的實現(xiàn)技巧,需要的朋友可以參考下
    2014-09-09
  • C指針原理教程之AT&T匯編

    C指針原理教程之AT&T匯編

    AT&T 匯編是一種和intel匯編在語法上完全不同的匯編語言,為避免混淆intel語法,本文只介紹AT&T匯編,AT&T的第一個特點就是每個寄存器名前必須加‘%’,立即數(shù)前必須加‘$’
    2019-02-02
  • VC實現(xiàn)的病毒專殺工具完整實例

    VC實現(xiàn)的病毒專殺工具完整實例

    這篇文章主要介紹了VC實現(xiàn)的病毒專殺工具完整實例,詳細講述了針對病毒的進程終止、刪除文件及回復(fù)注冊表與啟動項等,同時介紹了與之相關(guān)的系統(tǒng)函數(shù),非常具有參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C語言指針變量作為函數(shù)參數(shù)的實現(xiàn)步驟詳解

    C語言指針變量作為函數(shù)參數(shù)的實現(xiàn)步驟詳解

    這篇文章主要介紹了C語言指針變量作為函數(shù)參數(shù)的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02

最新評論

太仓市| 南开区| 罗平县| 措勤县| 托里县| 江达县| 宁南县| 汝阳县| 拜泉县| 台南市| 仪陇县| 垦利县| 恭城| 武胜县| 五大连池市| 旅游| 广汉市| 河间市| 泗洪县| 麦盖提县| 鲁山县| 六枝特区| 恭城| 包头市| 上杭县| 清丰县| 彭山县| 米易县| 长宁县| 平安县| 芮城县| 苏尼特右旗| 从江县| 九寨沟县| 泸西县| 江油市| 河源市| 肇庆市| 洪湖市| 汨罗市| 大田县|