顺序栈的进栈、出栈操作
2016-11-06 19:07
120 查看
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:Jerey_Jobs Version:0.1 Date: Description:顺序栈 Funcion List: *****************************************************/ #include <stdio.h> #include <stdlib.h> #define MAX 10 struct stack_data { int stack[MAX]; int top; }; typedef struct stack_data Stack; enum return_result {FULL_OK,FULL_NO,EMPTY_OK,EMPTY_NO,PUSH_OK,PUSH_NO,POP_NO = 0xefffffff}; void create_stack(Stack ** stack) { *stack = (Stack *)malloc(sizeof(Stack)); if((*stack)==NULL) { printf("malloc error!\n"); exit(-1); } } void init_stack(Stack ** stack) { (*stack)->top = -1; } int is_full(Stack ** stack) { if((*stack)->top == MAX) { return FULL_OK; } else { return FULL_NO; } } int push_stack(Stack ** stack,int num) { if(is_full(stack) == FULL_OK) { printf("the stack is full!\n"); return PUSH_NO; } ((*stack)->top)++; ((*stack)->stack[(*stack)->top])=num; return PUSH_OK; } int is_empty(Stack ** stack) { if((*stack)->top == -1) { return EMPTY_OK; } else { return EMPTY_NO; } } int pop_stack(Stack ** stack) { if(is_empty(stack) == EMPTY_OK) { printf("the stack is empty!\n"); return POP_NO; } return ((*stack)->stack[((*stack)->top)--]); ((*stack)->top)--; } int main() { Stack *stack; int i; int ret; create_stack(&stack); init_stack(&stack); for(i = 0; i < 10; i++) { if((push_stack(&stack, i + 1))== PUSH_OK) { printf("push ok!\n"); } } for(i = 0; i < MAX; i++) { ret = pop_stack(&stack); if(ret == POP_NO) { break; } printf("stack[%d]=%d\n",i,ret); } return 0; }
相关文章推荐
- 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素
- 链栈的定义、初始化、出栈、入栈等操作
- 顺序栈的基本操作
- 顺序栈的相关操作
- C++ 栈的 基本操作 入栈 出栈 判空 求长度
- 算法与数据结构之栈的操作----顺序栈
- C++ 栈的 基本操作 入栈 出栈 判空 求长度(方法二)
- 顺序栈(进制转换),包括一系列的操作
- 栈操作包括入栈,出栈,清空栈,销毁栈等
- 栈的基本操作(C语言版):入栈,出栈,输出栈
- 顺序栈结构及操作
- 顺序栈和链栈的各种操作
- 顺序栈和链栈的各种操作
- 采用链式存储实现,进栈、出栈操作
- 顺序栈和链栈的各种操作
- 有一个队列 ABCDEFG, 现有一个堆栈, 有三种操作, 出队, 入栈,出栈. 输出可以是出队操作也可以是出栈操作.试问如何判断某一序列不是无法输出的?
- 顺序栈的操作
- 编程实现一个栈结构,用数组来实现,具有入栈、出栈操作。
- 设a,b,c三个元素的进栈次序是a,b,c,符号PUSH与POP分别表示对堆栈进行一次进栈操作与一次出栈操作
- 顺序栈的建立及操作