栈的数组实现

来源:互联网 发布:数学教学软件 编辑:程序博客网 时间: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);}

原创粉丝点击