C语言下的进栈、出栈操作

来源:互联网 发布:有声自动阅读软件 编辑:程序博客网 时间:2024/06/05 16:34

这里创建的栈是顺序存储下的栈,其特征为:1,用数组存储。,  2,只允许在一端进行插入和删除。 3,先进后出(LIFO),最先进栈的必定最后出栈。类比于堆放一摞书,最先放在桌上的到后面一定被压在最下面,如果规定拿书只能从最上面拿的话,故只能最先放的书最后才能被拿到。以下是进栈出栈的实现。


#include <stdio.h>#include <stdlib.h>#define MAXN 1024char 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;}