1. 程式人生 > >C語言下的進棧、出棧操作

C語言下的進棧、出棧操作

這裡建立的棧是順序儲存下的棧,其特徵為:1,用陣列儲存。,  2,只允許在一端進行插入和刪除。 3,先進後出(LIFO),最先進棧的必定最後出棧。類比於堆放一摞書,最先放在桌上的到後面一定被壓在最下面,如果規定拿書只能從最上面拿的話,故只能最先放的書最後才能被拿到。以下是進棧出棧的實現。

#include <stdio.h>
#include <stdlib.h>
#define MAXN 1024
char stack[MAXN];
int top=0;



int push(char x)//進棧;
{
   if(top>=1024)
        return 0;//棧滿,進棧失敗,返回0;
   stack[top++]=x;
   return 1;//進棧成功,返回1;
}


int pop(char* p_ans)//出棧;
{
    if(top==0) return 0;//棧空,出棧失敗,返回0;
    //printf("%c\n",stack[--top]);
    *p_ans = stack[--top];
    return 1;//出棧成功,返回1;
}


int main()
{

    int n,i;
    char temp;
    char ans;
    

    while(scanf("%d\n",&n) == 1 )
    {
        for(i=0;i<2*n-1;i++)
        {
            scanf("%c",&temp);
            if(temp!=' ')
              push(temp);
        }

        for(i=0;i<n;i++)
        {
           pop(&ans);
            printf("%c%c",ans,i==n-1?'\n':' ');
        }
    }
    return 0;
}