数组实现堆栈操作

来源:互联网 发布:php魔术方法 编辑:程序博客网 时间:2024/05/21 00:52

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

感觉用不惯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 falseusing 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 0
原创粉丝点击