//stack.h #ifndef __STACK_H_ #define __STACK_H_ #define SIZE 5 typedef struct{ int arr[SIZE]; int size;//有效数字个数 }stack; //初始化栈的存储区 void stack_init(stack *); //清理栈的存储区 void stack_deinit(stack *); //判断栈是不是满了 int stack_full(const stack *); //判断栈是不是空的 int stack_empty(const stack *); //获得栈里有效数字个数 int stack_size(const stack *); //向栈放一个数字 void stack_push(stack *, int); //从栈获得下一个数字 int stack_pop(stack *); //从栈里获得下一个数字 int stack_top(const stack *); #endif //__STACK_H_ //stack.cpp /* 顺序物理结构栈演示 */ #include "stack.h" //初始化栈的存储区 void stack_init(stack *p_stack) { p_stack->size = 0; } //清理栈的存储区 void stack_deinit(stack *p_stack) { p_stack->size = 0; } //判断栈是不是满了 int stack_full(const stack *p_stack) { return p_stack->size == SIZE; } //判断栈是不是空的 int stack_empty(const stack *p_stack) { return !(p_stack->size); } //获得栈里有效数字个数 int stack_size(const stack *p_stack) { return p_stack->size; } //向栈放一个数字 void stack_push(stack *p_stack, int num) { p_stack->arr[p_stack->size] = num; p_stack->size++; } //从栈获得下一个数字 int stack_pop(stack *p_stack) { p_stack->size--; return p_stack->arr[p_stack->size]; } //从栈里获得下一个数字 int stack_top(const stack *p_stack) { return p_stack->arr[p_stack->size - 1]; } //main.cpp /* 栈测试 */ #include "stdio.h" #include "stack.h" int main() { stack stk = {0}; stack_init(&stk); stack_push(&stk,1); stack_push(&stk,3); stack_push(&stk,5); stack_push(&stk,7); stack_push(&stk,25); printf("数字个数是:%d\n",stack_size(&stk)); printf("判断满的结果是:%d\n",stack_full(&stk)); stack_top(&stk); printf("top结果是:%d\n",stack_top(&stk)); printf("top结果是:%d\n",stack_top(&stk)); printf("pop结果是:%d\n",stack_pop(&stk)); printf("pop结果是:%d\n",stack_pop(&stk)); printf("pop结果是:%d\n",stack_pop(&stk)); printf("pop结果是:%d\n",stack_pop(&stk)); printf("pop结果是:%d\n",stack_pop(&stk)); printf("判断空的结果是%d\n",stack_empty(&stk)); stack_deinit(&stk); return 0; }
栈的顺序存储结构实现。
猜你喜欢
转载自blog.csdn.net/chulijun3107/article/details/80172107
今日推荐
周排行