堆栈很简单,先进后出,用静态数组和动态内存分配实现:
- 版本一:静态数组版本
define STACK_SIZE 100
typedef int STACK_TYPE;
//堆栈数组
static STACK_TYPE stack[STACK_SIZE];
//栈顶offset index
static int top_element = -1;
//push
void push(STACK_TYPE value) {
assert(!is_full());
top_element += 1;
stack[top_element] = value;
}
//pop
void pop(void) {
assert(!is_empty());
top_element -= 1;
}
//top
STACK_TYPE top(void) {
assert(!is_empty());
return stack[top_element];
}
//is_empty
int is_empty() {
return top_element == -1;
}
//is_full
int is_full() {
return top_element == STACK_SIZE - 1;
}
int main() {
push(2);
push(4);
push(6);
push(8);
printf("top : %d\n", top());
pop();
printf("top : %d\n", top());
pop();
printf("top : %d\n", top());
pop();
printf("top : %d\n", top());
pop();
printf