#include<stdio.h>
#include<stdlib.h>
#define stack_size 30
struct stack{
int size;
int *base;
int *top;
};
struct stack s;
void creat_stack() //创建
{
s.base = (int *)malloc((stack_size)*sizeof(int));
s.top = s.base;
s.size = stack_size;
return;
}
int is_empty() //判断为空
{
if(s.top == s.base)
return 1;
else
return 0;
}
void input_stack(int num) //入栈
{
* s.top = num; //s.top = #有问题。
s.top = s.top + 1;
}
void output_stack() //出栈
{
int num;
if(is_empty())
printf("栈为空!\n");
else
{
num = *(s.top-1);
printf("%d\t",num);
s.top = s.top-1;
}
}
void destory_stack() //销毁
{
free(s.base);
}
void qingkong() //清空
{
s.top = s.base;
}
int len_stack() //求长度
{
int len;
len = s.top - s.base;
return len;
}
int main()
{
int num;
int i;
creat_stack(s);
for(i=0;i<3;i++)
{
printf("请输入要入栈的元素:");
scanf("%d",&num);
input_stack(num);
}
printf("栈的实际长度为:%d\n",len_stack());
for(i=0;i<3;i++)
{
output_stack();
}
// destory_stack();
return 0;
}