用数组写栈

来源:互联网 发布:java杨辉三角输出空格 编辑:程序博客网 时间:2024/06/05 12:42
#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX 10struct 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_OK,POP_NO};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 **stack){if((*stack)->top == MAX-1){return FULL_OK;}return FULL_NO;}int push_stack(Stack **stack,int num){if(is_full_stack(stack) == FULL_OK){printf("stack is full!\n");return PUSH_NO;}(*stack)->stack[++(*stack)->top] = num;return PUSH_OK;}int is_empty_stack(Stack **stack){if((*stack)->top == -1){return EMPTY_OK;}return EMPTY_NO;}int pop_stack(Stack **stack){if(is_empty_stack(stack) == EMPTY_OK){printf("stack is empty!\n");return POP_NO;}//tmp = (*stack)->stack[((*stack)->top)--];return POP_OK;}int main(){Stack *stack;int i;int tmp;srand(time(NULL));create_stack(&stack);init_stack(&stack);for (i = 0; i < MAX; i++){tmp = rand() % 100;if(tmp > 50){if(push_stack(&stack,i) == PUSH_OK){printf("push num %d\n",i);    }}else{if(pop_stack(&stack) == POP_OK){printf("pop  num %d\n",stack->stack[(stack->top)--]);}}}    return 0;}

0 0