#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int *array;
int size;
int top;
}stack;
/*
function:initial the stack with the size
input:stack *s, int size
output: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 full
input:stack *s
output: 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 empty
input:stack *s
output: 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 stop
input:stack *s, int data
output: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 stop
input:stac *s
output: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 stop
input:stack *s, int &data
output: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 stack
input:stack *s
output:void
*/
void destory_stack(stack *s)
{
free(s->array);
}栈的数组实现
最新推荐文章于 2022-03-28 00:21:19 发布
1265

被折叠的 条评论
为什么被折叠?



