栈的数组实现

#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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值