スタックの例 - 鉄道車両の再編

電車車両番号1-Nのセット

局を介して右から左へ

各車が一時的にメインライン上でいくつかの車を聞かせて、その後、戻って道路に追いつくために、(スタック)を停止することができます。

シーケンス番号とキャリッジは、可能であるか否かを判断する、コンパートメントが欲しかっ入力します。

CCF材料ボリュームP149、実施例6.9

コードは以下の通りであります:

1の#include <iostreamの>
 2の#include < ストリング >
 3の#include <cmath>
 4の#include <アルゴリズム>
 5  使って 名前空間STDを、
6  構造体スタック
 7  {
 8      INT [ 100 ]。
9      int型のp;
10  }。
11  ブールのisEmpty(スタック* S)
 12  {
 13      リターン S-> P == - 1 14  }
 15  空隙プッシュ(スタック* S、int型X)
16  {
 17      S-> P ++ 18      S-> [S-> P] =のX。
19  }
 20  int型のポップ(スタック* S)
 21  {
 22      であれば(!のisEmpty(S))
 23      {
 24          リターン S-> [S-> P-- ]。
25      }
 26      他の
27      {
 28          // COUT << "スタックが空です"。
29          リターン - 1 30      }
 31  }
 32  のint gettop(スタック* S)
 33 {
 34      であれば(!のisEmpty(S))
 35      {
 36          リターン S-> [S-> P]。
37      }
 38      他の
39      {
 40          // COUT << "スタックが空です"。
41          リターン - 1 42      }
 43  }
 44  main()の
 45  {
 46      スタック* mystack = 新しいスタック。
47      INT [ 100 ] = { 0 }、B [ 100 ] = { 0 }、N、* P1、P2 *。//Aは、目的の配列であり、Bは、右から左へステーションを介して初期シーケンス、B列である
48      BOOLをフラグ=でtrueに49      mystack-> P = - 1。;
 50      P1 = A;
 51である      P2 = B;
 52である     // 初期化が開始
53である      CIN >> N-;
 54である     ためINT I = 0、I <N - 、Iは++ 55      {
 56である          [I] =私は+ B 1 ;
 57である     }
 58      のためにINT I = 0、I <N - 、I ++は59      {
 60         >> CIN A [I];
 61である     }
 62は、     // 初期化端
63であり     、一方(* P1!= 0 64      {
 65          IF(P2 * == 0 && getTop(myStack)* =!P1)
 66          {
 67              フラグに= falseに68              BREAK ;
 69          }
 70          
71である         {
 72              IF(== *のP1 *のP2)
 73は             、{
 74                  P1 ++ ;
 75                  P2 ++;
76              }
 77              そう であれば(* P1 == gettop(mystack))
 78              {
 79                  POP(mystack)。
80の                  P1 ++ ;
81              }
 82              他の
83              {
 84                  プッシュ(mystack、* P2)。
85枚の                  P2 ++ ;
86              }
 87          }
 88      }
 89      であれば(フラグ)
 90      {
 91          COUTは<< 私はそれを行うことができます。" ;
 92      }
 93      他の
94      {
 95          COUT << " は不可能です。" ;
 96      }
 97      フリー(mystack);
 98 }

ここで終わり

おすすめ

転載: www.cnblogs.com/wanjinliu/p/11420051.html