《演算法導論》資料結構那一章節的練習。
方法一:
使用靜態數組
#include<stdio.h><br />int SS[10];//定義一個數組作為stack<br />int top=0;//定義stack的指標<br />bool STACK_EMPTY()//判斷stack是否為空白<br />{<br />if(top==0)<br />return true;<br />else<br />return false;<br />}<br />void PUSH(int *S,int x)//入棧操作<br />{<br />top=top+1;<br />S[top]=x;<br />}<br />int POP(int *S)//出棧操作<br />{<br />if(STACK_EMPTY())//如果棧為空白,則返回-1<br />return -1;<br />else//如果棧不為空白,則指標向前退1,返回當前指標所指向的元素<br />top=top-1;<br />return S[top+1];<br />}<br />void main()<br />{<br />//連續壓棧,將1,2,3,4,5一次存入棧中。<br />PUSH(SS,1);<br />PUSH(SS,2);<br />PUSH(SS,3);<br />PUSH(SS,4);<br />PUSH(SS,5);<br />while(top!=0)//如果棧不為空白,則執行出棧操作,並輸出出棧的元素。<br />{<br />int p=POP(SS);<br />printf("%d/n",p);<br />}<br />}
方法二:
通過傳遞數組的引用實現
#include<stdio.h><br />bool STACK_EMPTY(int &top)<br />{<br />if(top==0)<br />return true;<br />else<br />return false;<br />}<br />void PUSH(int *S,int x,int &top)<br />{<br />top=top+1;<br />S[top]=x;<br />}<br />int POP(int *S,int &top)<br />{<br />if(STACK_EMPTY(top))<br />return -1;<br />else<br />top=top-1;<br />return S[top+1];<br />}<br />void main()<br />{<br />int SS[10];<br />int top=0;<br />PUSH(SS,1,top);<br />PUSH(SS,2,top);<br />PUSH(SS,3,top);<br />PUSH(SS,4,top);<br />PUSH(SS,5,top);<br />while(top!=0)<br />{<br />int p=POP(SS,top);<br />printf("%d/n",p);<br />}<br />//printf("hello world!/n");<br />}