リンクスタック(PUSH、POP、およびバイナリ変換)最適化されたバージョンの基本動作

書式#include <stdio.hに>

書式#include <malloc.hを>

#define ElemType int型

実際には限られた単一リンクリストでリンクスタック構造の構造体LinkStack {//定義のtypedef  

ElemTypeデータ。  

*次LinkStack構造体。

} LinkStack。

LinkStack * INIT(LinkStack *トップ)

{//第1のノード上部を有するリンクスタック=(LinkStack *)はmalloc(はsizeof(LinkStack))を初期化します。

 トップ>次= NULL; トップ返します。

}

LinkStack *プッシュ(LinkStack *トップ、ElemType&E)

{//プッシュ操作LinkStackの* pを、  

P =(LinkStack *)はmalloc(はsizeof(LinkStack))。

 もし(p == NULL){のprintf( "栈满")。}

 他{P->データ= E。p型>次=トップ>次; トップ>次= P; }

 トップ返します。

}

LinkStackポップ(LinkStack *トップ)

{//ポップ操作LinkStack * pを。  

ElemTypeと;

 P =トップ>次;

 もし(p == NULL){のprintf( "栈空")。}  

他の{  

 E = P->データ;   

printf( "%dの"、E)。  

 トップ>次= P->次。   

無料(P);  

}

 トップ返します。

}

LinkStack *取得(LinkStack *トップ)

{//要素は、スタック内にある、先頭の要素を取得します。  

ElemTypeと;

 LinkStack * P;  

P =トップ>次;

 もし(p == NULL){のprintf( "空栈")。  

}エルス{のprintf( "\ nはトップ要素を取得:")。  

 E = P->データ;   

printf( "%d個の\ n"、E)。}

}

void *型Coversion(ElemType 12月)

{//小数点進ElemType E。  

LinkStack *トップ、* P; トップ=初期(上部)

 用(;!12月= 0; 12月= 12月/ 8)

{   

E = 12月8%。トップ=プッシュ(トップ、E)。

 }  

用(P =トップ>次に、P、P =トップ>次)

{  

 トップ=ポップス(上部)}

}

メインint型()

{  

LinkStack *トップ。

 ElemType 12月;

 printf( "進数を入力:\ nを");

 scanf関数( "%のD"、&DEC)。  

//トップ=初期(上部)

 / *のprintf( "スタック要素を入力してください:");  

scanf関数( "%のD"、&E)。  

(E = - 1!)一方{トップ=プッシュ(トップ、E)。   

scanf関数( "%のD"、&E)。}  

(トップ)を取得します。  

トップ=ポップス(上部)

 トップ=ポップス(上部)  

// Get_top(上); * /

 printf( "進のためです:");

 Coversion(分解)。  

0を返します。}

 

おすすめ

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