使用數組實現棧stack功能

來源:互聯網
上載者:User

《演算法導論》資料結構那一章節的練習。

 

 

方法一:

使用靜態數組

#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 />} 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.