動的スタックに順次格納されている基本的な動作(初期化、スタック、トップ要素へのアクセス、スタック)

する#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;
}

おすすめ

転載: www.cnblogs.com/jiafeng1996/p/11297035.html