#include<stdio.h>
#include<stdlib.h>
#定义栈结构
typedef struct stack {
int *data;
int *pointer;
int capacity;
}mystack;
#初始化栈
void init_stack(mystack *stack, int capacity){
stack->data = (int *)malloc(capacity * sizeof(int));
stack->pointer = stack->data;
stack->capacity = capacity;
}
#释放分配的内存
void free_stack(mystack *stack){
free(stack->data);
stack->capacity = 0;
}
#栈是否是满的
int full_stack(mystack *stack){
return stack->pointer - stack->data >= stack->capacity;
}
#栈是否是空
int empty_stack(mystack *stack){
return stack->data - stack->pointer > 0;
}
#推入数据
void push_stack(mystack *stack, int data){
if(!full_stack(stack))
*(stack->pointer++) = data;
}
#弹出数据
int pop_stack(mystack *stack){
if(!empty_stack(stack))
return *(--stack->pointer);
}
#获取当前的容量
int getsize_stack(mystack *stack){
if(!empty_stack(stack)){
return stack->pointer - stack->data;
}
}
int main(void){
mystack stack;
int capacity = 5;
init_stack(&stack, capacity);
int num = 100;
int i;
for(i = 0; i < capacity; i++){
push_stack(&stack, num + i);
}
printf("%d\n", getsize_stack(&stack));
for(i = 0; i < capacity; i++){
printf("%d\n", pop_stack(&stack));
}
printf("%d\n", empty_stack(&stack));
free_stack(&stack);
return 0;
}
输出如下:
5
104
103
102
101
100
0












网友评论