首页 > 其他 > 详细

栈操作

时间:2020-03-06 17:53:26      阅读:66      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>

#define MaxSize 10

typedef struct{
    int data[MaxSize];
    int top;
}Stack;

void InitStack(Stack &);    //初始化 
int StackEmpty(Stack);      //判断栈是否为空
bool Push(Stack & , int e);     //入栈 
int Pop(Stack & , int &);   //出栈 
int  TopData(Stack , int);  //读取栈顶数据 

int main(void){
    Stack s;
    InitStack(s);
    
    switch(StackEmpty(s)){
        case 0:
            printf("栈空.\n");
            break;
        case 1:
            printf("栈满.\n");
            break;
        case 2:
            printf("栈不为空且不满.\n");
    }
    
    Push(s,1);
    Push(s,2);
    Push(s,3);
    Push(s,4);
    
    int e = 0;
    printf("出栈的数据是:%d\n",Pop(s,e));
    printf("出栈的数据是:%d\n",Pop(s,e));
    
    printf("栈顶数据为:%d\n",TopData(s,e));
    return 0;
} 

//初始化 
void InitStack(Stack &s){
    s.top = -1;
}

//判断栈是否为空 
int StackEmpty(Stack s){
    if(s.top = -1){
        return 0;
    }else if(s.top == MaxSize - 1){
        s.top == MaxSize - 1;
        return 1;
    }else{
        return 2;
    }
} 

//入栈
bool Push(Stack &s , int e){
    if(s.top == MaxSize - 1){
        printf("栈满");
        return false;
    }
    s.data[++s.top] = e;
    return true;
} 

//出栈
int Pop(Stack &s , int &e){
    if(s.top == -1){
        printf("栈空");
        return 0;
    }
    e = s.data[s.top--];
    return e;
}

//读取栈顶数据 
int TopData(Stack s , int e){
    if(s.top == -1){
        printf("栈空");
        return 0;
    }
    e = s.data[s.top];
    return e;
}

栈操作

原文:https://www.cnblogs.com/Timesi/p/12427879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!