栈的数组实现
来源:互联网 发布:数学教学软件 编辑:程序博客网 时间:2024/06/14 00:19
#include <stdio.h>#include <stdlib.h>typedef struct{ int *array; int size; int top;}stack;/*function:initial the stack with the sizeinput:stack *s, int sizeoutput:void*/void initStack(stack *s, int size){ s->size = size; s->top = -1; s->array = (int *)malloc(sizeof(int) * s->size);}/*function:check whether the stack is fullinput:stack *soutput: 1--the stack is full; 0--the stack is not full*/int is_stack_full(stack *s){ return (s->size - 1) <= s->top;}/*function:check whether the stack is emptyinput:stack *soutput: 1--the stack is empty; 0--the stack is not empty*/int is_stack_empty(stack *s){ return s->top < 0;}/*function:push data to the stack,if the stack is full, it will stopinput:stack *s, int dataoutput:void*/void push(stack *s, int data){ if (is_stack_full(s)) { printf("The stack is also full !\n"); exit(1); }else { s->top ++; s->array[s->top] = data; }}/*function:pop from the stack and no data will be return ,if the stack is empty, it will stopinput:stac *soutput:void*/void pop(stack *s){ if(is_stack_empty(s)) { printf("The stack is also empty !\n"); exit(1); }else { s->top --; }}/*function:get the top element of the stack for data, if the stack is empty, it will stopinput:stack *s, int &dataoutput:void*/void get_top(stack *s, int &data){ if(is_stack_empty(s)) { printf("The stack is also empty !\n"); exit(1); }else { data = s->array[s->top]; }}/*fucntion:destory the stackinput:stack *soutput:void*/void destory_stack(stack *s){ free(s->array);}