C語言下的進棧、出棧操作
阿新 • • 發佈:2019-02-07
這裡建立的棧是順序儲存下的棧,其特徵為: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; }