天天看點

使用數組實作棧stack功能

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

方法一:

使用靜态數組

#include<stdio.h>  

int SS[10];//定義一個數組作為stack  

int top=0;//定義stack的指針  

bool STACK_EMPTY()//判斷stack是否為空  

{  

    if(top==0)  

        return true;  

    else  

        return false;  

}  

void PUSH(int *S,int x)//入棧操作  

    top=top+1;  

    S[top]=x;  

int POP(int *S)//出棧操作  

    if(STACK_EMPTY())//如果棧為空,則傳回-1  

        return -1;  

    else//如果棧不為空,則指針向前退1,傳回目前指針所指向的元素  

        top=top-1;  

    return S[top+1];  

void main()  

    //連續壓棧,将1,2,3,4,5一次存入棧中。  

    PUSH(SS,1);  

    PUSH(SS,2);  

    PUSH(SS,3);  

    PUSH(SS,4);  

    PUSH(SS,5);  

    while(top!=0)//如果棧不為空,則執行出棧操作,并輸出出棧的元素。  

    {  

        int p=POP(SS);  

        printf("%d/n",p);  

    }  

方法二:

通過傳遞數組的引用實作

bool STACK_EMPTY(int &top)  

void PUSH(int *S,int x,int &top)  

int POP(int *S,int &top)  

    if(STACK_EMPTY(top))  

    int SS[10];  

    int top=0;  

    PUSH(SS,1,top);  

    PUSH(SS,2,top);  

    PUSH(SS,3,top);  

    PUSH(SS,4,top);  

    PUSH(SS,5,top);  

    while(top!=0)  

        int p=POP(SS,top);  

//  printf("hello world!/n");  

本文轉自xwdreamer部落格園部落格,原文連結:http://www.cnblogs.com/xwdreamer/archive/2011/01/03/2297052.html,如需轉載請自行聯系原作者

繼續閱讀