13数组实现顺序堆栈的基本操作

运行如下所示:

018数组实现顺序堆栈的基本操作 - 458905216 - SaEe的博客
/*018数组实现顺序堆栈的基本操作*/
#include <stdio.h>
#define MaxStackSize 100
typedef int DataType;
typedef struct
{
    DataType stack[MaxStackSize];
int top;
}SeqStack;
/*初始化顺序堆栈S*/
void StackInitiate(SeqStack *S)
{
    S->top = 0;             
}
/*判断堆栈S非空否,非空返回1,否则返回0*/
int StackNotEmpty(SeqStack *S)
{
    if(S->top <= 0)
  return 0;
else
  return 1;
}
/*把数据元素值x存入顺序堆栈S中,入栈成功则返回1,否则返回0*/
int StackPush(SeqStack *S , DataType x)
{
    if(S->top >= MaxStackSize)
    {
        printf("堆栈已满无法插入!\n");
  return 0;
}
else
{
        S->stack[S->top] = x;
  S->top++;
  return 1;
}
}
/*取出顺序堆栈S的栈顶数据元素值由参数d带回,出栈成功则返回1,否则返回0*/
int StackPop(SeqStack *S , DataType *d)
{
    if(S->top <= 0)
    {
        printf("堆栈已空无数据元素出栈!\n");
  return 0;
}
else
{
        S->top--;
  *d = S->stack[S->top];
  return 1;
}
}
/*取顺序堆栈S的当前栈顶数据元素值由参数d带回,成功则返回1,否则返回0*/
int StackTop(SeqStack *S , DataType *d)
{
    if(S->top <= 0)
    {
        printf("堆栈已空!\n");
  return 0;
}
else
{
        *d = S->stack[S->top - 1];
  return 1;
}
}
void main(void)
{
    SeqStack myStack;
int i , x;
StackInitiate(&myStack);             /*初始化*/
for(i = 0 ; i< 10 ; i++)
  StackPush(&myStack , i + 1);     /*入栈*/
StackTop(&myStack , &x);             /*取栈顶元素*/
printf("当前栈顶数据元素为: %d\n" , x);
printf("依次出栈的数据元素序列如下: \n");
while(StackNotEmpty(&myStack))
{
        StackPop(&myStack , &x);        /*出栈*/
  printf("%d  " , x);
}
printf("\n");
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值