する#include <stdio.hに>
する#include <malloc.hを>
の#define 20 MAXSIZEで
の#define elemType INT
のtypedef構造体{// SQtack動的順次記憶構造、スタックのサイズ変動を有する収納スペース
*トップElemType、*ボトム; //定義スタックとスタックの底
INTのスタックサイズ、ストレージ・スペースの//スタック
} SQtack。
空Init_stack(SQtack&S){ // 初期化スタック
S.bottom =(elemType *)はmalloc(MAXSIZE *はsizeof(elemType));
のprintf( "メモリの\ N-に適用されていない")(!S.bottom)IF;
S .top = S.bottom; //スタック、スタック及び底スタックを初期化するように同じ場所を指す
S.stacksize MAXSIZE =;
}
Push_stackボイド(SQtack&S){
elemType E;
のprintf( "スタック要素を入力:\ N-")
; scanfの( "%のD"、&E)
(。!E = - 1)一方、{
(S.top-S IF。 。== 1ボトムS.stacksize - ){
のprintf(「フルスタック」); //ここで使用される底= STACKSIZEトップ1。
//スタックが満杯であるか否かを判定する、スタック空間の浪費、
}他{
//ここで第1の放電素子を介し、次いでジャークによって
* = E S.top;
S.top ++;
scanfの( "%のD"、&E);
}
}
}
Get_top(SQtack&S){無効 // スタックアクセス要素
; elemType top_e
IF(!S.bottom = S.top){
; top_e * =(。1-S.top)
":スタック\ nを%D"のprintf( 、top_e);
}
}
Pop_stackボイド(SQtack&S){
elemType A;
IF(S.top == S.bottom){
のprintf( "空のスタック");
}他{
S.top - ; //保存保存第一、及び、スタック
= S.top *;
のprintf( "%のD:スタックの\ N-"、A);
}
}
メインINT(){
SQtack S;
Init_stack(S); //初期化スタック
Push_stack(S); //スタック
Get_top(S)を; //先頭要素へのアクセス、またスタック
Pop_stack(S); //スタックの先頭の要素
Get_top(S);
戻り0;
}