#include <cstdio>#include<windows.h>#defineMAXSIZE 100structnode{intData[maxsize]; inttop;}; typedefstructNode Mystack;//Initializevoidmystackinit (Mystack S) {s.top= -1;}//empty sentenceBOOL mystackempty (mystack S) {if(S.top = =-1) returnTRUE; Else returnFALSE;}//into the stackvoidMystackpush (Mystack S,intx) { if(S.top = MAXSIZE-1) {printf ("Stack Full"); Exit (0); } s.top++; S.data[s.top]=x;}//out of the stackintMystackpop (Mystack S) {intx; if(Mystackempty (S) = =TRUE) {printf ("Stack Empty"); Exit (0); } Else{x=S.data[s.top]; S.top--; returnx; }}//take the top of the stackintMystackgetpop (Mystack S) {if(Mystackempty (S) = =TRUE) {printf ("Stack Empty"); Exit (0); } Else { returnS.data[s.top]; }}/********************************** chain Stack ***********************************/structnode{intdata; structnode*next;}; typedefstructNode mystacknode;typedefstruct{Mystacknode*top;} Mylinkedstack; Mylinkedstack*S;//InitializevoidMylinkedstackinit (mylinkedstack*S) {S->top =NULL;} BOOL Mylinkedstackempty (Mylinkedstack*S) { if(S->top = =NULL)returnTRUE; Else returnFALSE;}voidMylinkedstackpush (mylinkedstack* S,intx) {Mystacknode*MS; Ms= (mystacknode*)malloc(sizeof(Mystacknode)); if(ms =NULL) {printf ("Application Failure"); Exit (0); } Else{ms->data =x; Ms->next = s->top; S->top =MS; }}intMylinkedstackpop (mylinkedstack*S) {Mystacknode*p; intx; if(S->top = =NULL) {printf ("Stack Empty"); Exit (0); } x= s->top->data; P= s->top; S->top = s->top->Next; Free(P); returnx;}
Blog writing ugly I can not read the ...
Data Structure (ii): Stack and chain stack