定义栈结构
typedef struct STACK
{
int *array;
int top;
int bottom;
}S;
建立栈
S* creatstack(int len)
{
S* stack = (S*)malloc(sizeof(S));
if (stack)
{
stack->array = (int*)malloc(sizeof(int) * len);
if (stack->array == NULL)
return NULL;
stack->bottom = 0;
stack->top = 0;
}
return stack;
}
入栈
int in(S* stack,int data,int len)
{
if (stack->top == len)
return 0;
stack->array[stack->top++] = data;
return stack->top;
}
出栈
int out(S* stack)
{
if (stack->top)
return stack->array[--stack->top];
else return 0;
}
主函数
void main()
{
int len, n, data;
printf("请输入栈最大长度:\n");
scanf_s("%d", &len);
S* stack=creatstack(len);
printf("请输入入栈元素个数:\n");
scanf_s("%d", &n);
printf("请输入入栈元素:\n");
for (int i = 0; i < n; i++)
{
scanf_s("%d", &data);
if (in(stack, data, len) == 0)
break;
}
//入栈↑,出栈↓
printf("请输入出栈元素个数:");
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
printf("%d ",out(stack));
}
}