固定アレイで実装スタック、キュー

件名の説明:  

  問題1:
    固定サイズのスタック構造のアレイによって実現

問題解決のアイデア:
  ポインタを考えると実現することができます。

 

コードの実装:  

1  クラスArrayToStack
 2  {
 3  公共4      ArrayToStack(int型のサイズ= 3 5      {
 6           - >サイズ= サイズ。
7      }
 8  
9      ボイドプッシュ(のconst  int型A)
 10      {
 11          であれば(PTR < サイズ)
 12の              ARR [++ PTR] = 13          他の
14              coutの<< " エラー:スタックがいっぱいです!" <<endl;
15      }
 16  
17      INT トップ()
 18      {
 19          であれば(PTR> 0 20              リターン ARR [ptr- 1 ]。
21          他の
22              coutの<< " エラー:!スタックが空である" << てendl;
23          リターン - 1 24      }
 25  
26      ボイドポップ()
 27      {
 28          であれば(PTR> 0 29              ptr-- 30          他の 
31              coutの<< " エラー:!スタックが空である" << てendl;
32      }
 33  
34  プライベート35      のint サイズ;
36      INT * ARR = 新しい INT [サイズ]。
37      INT PTR = 0 38 }。

 

Problem2:
  配列とキューを使用して


問題解決のアイデア:
  キューに2つのフロントとテールポインタポイントの使用:

 

コードの実装:  

1  クラスArrayToQueue
 2  {
 3  公共4      ArrayToQueue(int型のサイズ= 3 )N(サイズ){}
 5  
6      ボイドプッシュ(INT A)
 7      {
 8          であれば(サイズ< N)
 9          {
 10              であれば(PTR1> = N)
 11                  PTR1 = 0 12              ARR [PTR1 ++] = 13              サイズ++ 14          }
 15          
16              COUTは<< " エラー:キューがいっぱいです!" << てendl;
17      }
 18  
19      INT トップ()
 20      {
 21          であれば(サイズ> 0 22              リターン[PTR0] ARR。
23          他の
24              coutの<< " エラー:!キューが空である" << てendl;
25          リターン - 1 26      }
 27  
28      空隙ポップ()
 29      {
 30          もし(サイズ> 0 31          {
 32              であれば(PTR0> = N)
 33                  PTR0 = 0 34              PTR0 ++ ;
35              size-- 36          }
 37          、他
38              COUTは<< " エラー:キューが空である!" << てendl;
39      }
 40  
41  プライベート42      INT N。
43      INT PTR0 = 0、PTR1 = 0、サイズ=0 ;
44      INT * ARR = 新しい INT [N]。
45  
46 }。

テストコード:

  

1つの ボイド試験()
 2  {
 3      ArrayToStack S(5 )。
4      s.Pop();
5      COUT << s.Top()<< ENDL。
6      裁判所未満<< " **************** " << てendl;
7      s.Push(1 )。
8      s.Push(2 )。
9      s.Push(3 )。
10      s.Push(4 )。
11      s.Push(5 )。
12      s.Push(6 )。
13     裁判所未満<< " **************** " << てendl;
14      COUT << s.Top()<< ENDL。
15      s.Pop()。
16      COUT << s.Top()<< ENDL。
17  
18  
19      COUT << " ========================== " << ENDL。
20      裁判所未満<< " ========================== " << てendl;
21      裁判所未満<< " ========================== " << てendl;
22      ArrayToQueue Q(5 )。
23     COUT << q.Top()<< ENDL。
24      q.Pop()。
25  
26      q.Push(1 )。
27      q.Push(2 )。
28      q.Push(3 )。
29      q.Push(4 )。
30      q.Push(5 )。
31      q.Push(6 )。
32  
33      COUT << q.Top()<< ENDL。
34      q.Pop()。
35      COUT << q.Top()<< ENDL。
36  
37      q.Push(6 )。
38     COUT << q.Top()<< ENDL。
39  
40 }

 

おすすめ

転載: www.cnblogs.com/zzw1024/p/10988033.html