顺序栈的实现 C语言版(二)

/*****************************************************************************/
#include <stdio.h>
#include <malloc.h>
/*****************************************************************************/
#define  MAXSIZE 10
/*****************************************************************************/
typedef struct {
 int  data[MAXSIZE];
 int  top;
}Stack, *pStack;
/*****************************************************************************/
pStack init_stack(void);    //栈的初始化
int push_stack(pStack s, int val);  //压栈  返回值表示是否压栈成功
void show_stack(pStack s);    //输出栈中元素 不改变栈顶指针
int pop_stack(pStack s, int *val);  //出栈操作 返回值表示出否出栈成功  出栈的值通过指向val的指针传递
int getTop(pStack s, int *val);   //取栈顶元素 返回值表示出否出栈成功  取得的值通过指向val的指针传递
int empty_stack(pStack s);    //判断栈是否为空
/*****************************************************************************/
int main(void)
{
 pStack s;
 int val;
 s = init_stack();
// printf("%d\n", s->top);
 push_stack(s, 1);
 push_stack(s, 2);
 push_stack(s, 3);
 push_stack(s, 4);
 show_stack(s);

// getTop(s, &val);
// printf("\n%d ", val);
 pop_stack(s, &val);
 pop_stack(s, &val);
 pop_stack(s, &val);

 if (empty_stack(s))
  printf("\n栈空");
 else
  printf("\n栈不为空");
 return 1;
}


/*****************************************************************************/
//栈的初始化
pStack init_stack(void)
{
 pStack s = (pStack)malloc(sizeof(Stack));
 s->top = -1;
 return s;
}
/*****************************************************************************/
//压栈
int push_stack(pStack s, int val)
{
 if (MAXSIZE-1 == s->top)
  return 0;
 else
 {
  ++s->top;
  s->data[s->top] = val;
  return 1;
 }
}
/*****************************************************************************/
//输出栈中元素 不改变栈顶指针
void show_stack(pStack s)
{
 int i;
 for (i=0; i<=s->top; ++i)
 {
  printf("%d ", s->data[i]);
 }
 
}
/*****************************************************************************/
//出栈
int pop_stack(pStack s, int *val)
{
 if (-1 == s->top)
  return 0;
 *val = s->data[s->top];
 --s->top;
 return 1;
}
/*****************************************************************************/
//取栈顶元素 不改变栈顶指针
int getTop(pStack s, int *val)
{
 if (-1 == s->top)
  return 0;
 *val = s->data[s->top];
 return 1;
}
/*****************************************************************************/
//判断栈是否为空
int empty_stack(pStack s)
{
 if (-1 == s->top)
  return 1;
 else
  return 0;
}
/*****************************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值