您的位置:首页 > 理论基础 > 数据结构算法

数据结构之数组实现栈结构

2011-11-30 10:51 295 查看
#include <stdio.h>
#include <stdlib.h>
int *top(int *S)//返回栈顶位置
{
return &S[0];
}
int Stack_Empty(int *S)//判断栈是否为空
{
if(*top(S)==0)//栈顶=0,则栈为空
return 1;
return 0;
}
int Stack_Full(int *S)//判断栈是否已满
{
if(*top(S)==10)
return 1;
return 0;
}
void Push(int *S,int x)
{
if(Stack_Full(S))//如果已满
printf("栈已经满了,不能压入新的元素!\n");
else
{
(*top(S))++;//将栈顶位置+1,并压入新的元素
S[*top(S)]=x;
}
}
int Pop(int *S)
{
int x=-100;
if(Stack_Empty(S))
printf("栈已空,没有元素可以出栈!\n");
else
{
x=S[*top(S)];//得到栈顶元素,并将位置-1
(*top(S))--;
}
return x;
}
int main(int argc, char *argv[])
{
int i,x;
int S[11]={0};//存放栈,其中S[0]为栈顶位置
int length=10;//存放栈的长度,暂时默认为10
printf("出栈的元素为:%d\n",Pop(S));
for(i=0;i<11;i++)
{
printf("请输入要压入的元素:");
scanf("%d",&x);
Push(S,x);
}
for(i=0;i<5;i++)
printf("出栈的元素为:%d\n",Pop(S));
system("PAUSE");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: