顺序栈

#include<stdio.h>
#define MAXSIZE 100 //是顺序栈所能存储的最多元素个数
#define TRUE 1
typedef int datatype;
typedef struct//顺序栈的定义 
{
    datatype stack[MAXSIZE]; //stack 数组存储栈中所有的数据元素 
    int top;
 } seqstack;//顺序栈的类型定义 
 seqstack *S;//顺序栈变量定义 
 
 //顺序栈的初始化运算
 void INITSTACK(seqstack *S)
 {
     S->top=-1;//将顺序栈设置为空栈 
  } 
  
  
  //检查顺序栈是否为空栈的运算
   int EMPTY(seqstack *S)
   {
       if(S->top<0)return (TRUE);//若顺序栈为空,函数返回1 
       else return (NULL);//若顺序栈不为空,函数返回0 
   }
   
   //向顺序栈中插入元素的运算 
   seqstack *PUSH(seqstack *S,datatype x)
   {
       if(S->top>=MAXSIZE-1)//检查顺序栈是否为满栈 
       {
           printf("栈满溢出错误!");    
           return (NULL); //若为满栈 终止程序 
    }
    else
    {
            S->top++;//将栈顶指针加1,使之指向新结点 
            S->stack[S->top]=x;
    }
    return (S);
   }
   
   //从顺序栈中删除栈顶元素的运算
   datatype POP(seqstack *S)
   {datatype x;
       if(S->top<0)//注意是top<0; 
       {    
           printf("栈空出错误!");
           return (NULL);
       }
       else
       {
           x=S->stack[S->top];
           S->top--;
           return (x);
       }
       
    } 
    //顺序栈取栈顶元素的运算
    datatype gettop_seqstack(seqstack *S)
    {
        if(EMPTY(S))
        {
            printf("栈是空栈!");
            return (NULL);
        }
        else 
        return(S->stack[S->top])
     } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值