这里创建的栈是顺序存储下的栈,其特征为: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;
}