• 栈——判断回文


    //"SqStack.h"
    #include<iostream>
    using namespace std;
    
    #define SElemType_int int
    #define SElemType_char char
    #define MAXSIZE 100
    
    typedef struct{
        SElemType_int *base;
        SElemType_int *top;
        int stacksize;
    }SqStack_int;
    
    typedef struct{
        SElemType_char *base;
        SElemType_char *top;
        int stacksize;
    }SqStack_char;
    
    string InitStack(SqStack_int &S){
        S.base = new SElemType_int[MAXSIZE];
        S.top = S.base;
        S.stacksize=MAXSIZE;
        return "OK";
    }
    
    string InitStack(SqStack_char &S){
        S.base = new SElemType_char[MAXSIZE];
        S.top = S.base;
        S.stacksize=MAXSIZE;
        return "OK";
    }
    
    string Push(SqStack_int &S,SElemType_int e){
        if(S.top-S.base == S.stacksize) return "ERROR";
        *S.top=e;
        S.top++;
        return "OK";
    }
    
    string Push(SqStack_char &S,SElemType_char e){
        if(S.top-S.base == S.stacksize) return "ERROR";
        *S.top=e;
        S.top++;
        return "OK";
    }
    
    string pop(SqStack_int &S,SElemType_int &e){
        if(S.base == S.top) return "ERROE";
        S.top--;
        e = *S.top;
        return "OK";
    }
    
    string pop(SqStack_char &S,SElemType_char &e){
        if(S.base == S.top) return "ERROE";
        S.top--;
        e = *S.top;
        return "OK";
    }
    
    SElemType_int GetTop(SqStack_int S){
        if(S.top != S.base){
            return *(S.top-1);
        }
    } 
    
    SElemType_char GetTop(SqStack_char S){
        if(S.top != S.base){
            return *(S.top-1);
        }
    } 
    
    int StackEmpty(SqStack_char S){
        if(S.top == S.base) return 1;
        return 0;
    }
    int StackEmpty(SqStack_int S){
        if(S.top == S.base) return 1;
        return 0;
    }
    #include<iostream>
    #include"SqStack.h"
    using namespace std;
    
    /*
        判断回文
    */
    
    
    int main(){
    
        SqStack_char C ; 
        InitStack(C);
        int n;
        int flag1 = 0;       //判断奇偶
        int flag2 = 0;       //判断正误
        cout <<"How many characters"<<endl;
        cin >> n;
        cout << "Input one leter per time"<<endl;
        
        char ch;
    
        if(n%2) flag1 = 1;
        
        for(int i=1;i<=(n/2);i++){                 //将一半字符入栈
            cin >> ch;
            Push(C,ch);
        } 
    
        if(flag1){           //有奇数个字符      
            cin >> ch;
            for(int i=(n/2+2);i<=n;i++){
                cin >> ch;
                char e;
                pop(C,e);
                if(ch != e){
                    flag2 = 1;break;      //另外一半字符分别对栈顶字符进行比较
                }
            }
        }else
        {
            for(int i=(n/2+1);i<=n;i++){
                cin >> ch;
                char e;
                pop(C,e);
                if(ch != e){
                    flag2 = 1;break;
                }
            }
        }
        
        if(flag2) cout <<"WRONG";
        else cout << "TRUE";
        
        system("pause");
        return 0;
    }
  • 相关阅读:
    (hdu 7.1.8)Quoit Design(最低点——在n一个点,发现两点之间的最小距离)
    [Windows]_[0基础]_[使用命令行工具dumpbin分析文件]
    《走开》反馈
    二分基础
    日历的问题C语言,C++(boost),python,Javascript,Java和Matlab实现
    Unity3D 游戏开发架构篇 ——性格一流的设计和持久性
    2015第54周四
    2015第54周三
    2015第54周二
    2015第54周一
  • 原文地址:https://www.cnblogs.com/LuMinghao/p/14007961.html
Copyright © 2020-2023  润新知