スタック順:
1の#include <iostreamの> 2 使用して 名前空間STDを、 3 CONST INT MAXN = 100 。 4のtypedef 構造体Sノード{ 5個の int型データ[MAXN]。 6 INTのトップ= - 1 。 7 }スタック。 8 9 int型のプッシュ(スタック* S、int型 N){ // 将N个数入栈 10 であれば(S->トップ== Maxn- 1 ){ 11 COUT << " ERROR!" 。 12 リターン 0; 13 } 14 のint V。 15 一方(N!= 0 ){ 16 S->トップ++ 。 17 cinを>> V; 18 S->データ[S->トップ] = V。 19 - N。 20 } 21 リターン 1 。 22 } 23 int型ポップ(スタック* S){ // 出栈操作 24 であれば(S->トップ== - 1 ){ 25 coutの<< " ERROR!" ; 26 リターン 0 ; 27 } 28 S-> top-- 。 29 リターン 1 。 30 } 31 ボイドプリント(スタックS){ 32 であれば(s.top == - 1)COUT << " ERROR!" << ENDL。 33 一方(s.top> = 0 ){ 34 COUT << s.data [s.top] << " " 。 35 - s.top。 36 } 37 COUT << ENDL。 38 } 39 INTメイン(){ 40 スタックS。 41 INT N。cinを>> N; 42 プッシュ(&S、N)。 43 プリント(S)。 44 ポップ(&S)。 45 プリント(S)。 46 リターン 0 ; 47 }
チェーン・スタック:
1の#include <STDLIB.H> 2の#include <iostreamの> 3。 使用した 名前空間STD; 4 5。 typedefは構造体 SNODE { // リンクスタック構造ノード 6。 INT データ; 7 構造体 SNODE * 次に、 8 } * SPTR、 図9のtypedef 構造体 LStack { // リンクスタック構造体 10 のトップSPTR; 11 int型 COUNT = 0 ; 12である }スタック、 13は 14 INTプッシュ(スタックS *、INT N-){// 入栈 15 SPTR秒。 16 INT V; 17 一方(N!= 0 ){ 18 、S =(Sノード*)はmalloc(はsizeof (Sノード))。 19 cinを>> V; 20 S->データ= V。 21 S->次= S-> トップ。 22 S->トップ= S。 23 S->数++ ; 24 - N。 25 } 26 リターン 0 。 27 } 28 のintポップ(スタック* S){ // 出栈 29 SPTR秒; 30 S = S-> トップ。 31 S->トップ= S->トップ> 次。 32 S-> count-- 。 33 フリー(S)。 34 リターン 0 。 35 } 36 37 ボイドプリント(スタックS){ 38 であれば(S.top == NULL)COUT << " ERROR!" << ENDL。 39 他{ 40 SPTR S = S.top。 41 一方、(S!= NULL){ 42 coutの<< S->データ<< " " ; 43 S = S-> 次。 44 } 45 COUT << ENDL。 46 } 47 } 48 int型のmain(){ 49 スタックS。 50 INT N。cinを>> N; 51 プッシュ(&S、N)。 52 // 印刷(S); 53 ポップ(&S)。 54 印刷(S); 55 56 戻り 0 ; 57 }