数组实现堆栈操作

感觉自己数据结构学的好慢啊。

感觉用不惯C++的输入输出,其实看我胡扯不如直接去看代码来的实在。

堆栈的在于查看是否满(溢出),或者为空(NULL)

上代码:

//
//  main.cpp
//  数组实现堆栈
//
//  Created by MaLker on 2017/3/20.
//  Copyright © 2017年 MaLker. All rights reserved.
//

#include <iostream>
//#include <algorithm>
#include <string.h>
#define Max_Size 1000
#define OK true
#define NO false
using namespace std;
int Stk[Max_Size],Now_Sit,Max_Lenth;
bool Creat_Stak(void){//1r 创造一数组,来模拟堆栈
    cout<<"Please enter the max lenth :";
    cin>>Max_Lenth;
    Now_Sit=0;
    return OK;
}
bool Pop(void){//2o 从栈的顶端拿出
    if (Now_Sit==0) {
        cout<<"You do not have anything in the Stack\n";
        return NO;
    }
    //printf("%d\n",Stk[Now_Sit-1]);
    Now_Sit--;
    return OK;
}
bool Push(void){//3u压入一个数字
    if (Now_Sit==Max_Lenth) {
        cout<<"Your Stack is full!!\n";
        return NO;
    }
    printf("Please input you want push number :");
    scanf("%d",&Stk[Now_Sit]);
    Now_Sit++;
    return OK;
}
bool Peak(void){//4e输出顶端
    if (Now_Sit==0) {
        cout<<"You do not have anything in the Stack\n";
        return NO;
    }
    printf("%d\n",Stk[Now_Sit-1]);
    Now_Sit--;
    return OK;
}
void Operat(void){
    printf("**************** Welcome ********************\n");
    while (OK) {
        printf("Please input Operatin :");
        char Operat_Signal[Max_Size];
        scanf("%s",Operat_Signal);
        getchar();
        int Oper_Sgnl=0;
        if (Operat_Signal[1]=='R'||Operat_Signal[1]=='r') {
            Oper_Sgnl=1;
        }
        else if (Operat_Signal[1]=='O'||Operat_Signal[1]=='o')
            Oper_Sgnl=2;
        else if (Operat_Signal[1]=='U'||Operat_Signal[1]=='u')
            Oper_Sgnl=3;
        else if (Operat_Signal[1]=='E'||Operat_Signal[1]=='E')
            Oper_Sgnl=4;
        else
            Oper_Sgnl=0;
        int IsOK=0;
        switch (Oper_Sgnl) {
            case 1:
                IsOK=Creat_Stak();
                break;
            case 2:
                IsOK=Pop();
                break;
            case 3:
                Push();
                break;
            case 4:
                Peak();
                break;
            default:
                return ;
                break;
        }
        if (IsOK) {
            printf("%s SUCCESS!!!\n",Operat_Signal);
        }
        else{
            printf("%s FALSE!!!\n",Operat_Signal);
        }
    
    }
}
int main(int argc, const char * argv[]) {
    Operat();
    return 0;
}
/*  Creat
 bool Push ( const T& item ) ; // 向栈顶压入一个元素
bool Pop ( T & item ) ; // 从栈顶弹出一个元素
bool Peek ( T & item ) const ; // 存取栈顶元素
int IsEmpty ( void ) const { return top = = -1 ; }
// 检测栈是否为空
int IsFull ( void ) const { return top   size-1 ; }
// 检测栈是否为满
void clear ( void ) { top-1 ; } // 清空栈
} ;*/


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值