zoukankan      html  css  js  c++  java
  • 栈——判断回文

    //"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;
    }
  • 相关阅读:
    SQL随机生成6位数字
    安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
    Windows 7 完美安装 Visual C++ 6.0
    解决js中window.location.href不工作的问题
    DataList中动态显示DIV
    Gridview、DataList、Repeater获取行索引号
    Java多jdk安装
    【CentOS】samba服务器安装与配置
    【CentOS】IBM X3650M4 IMM远程管理【转载】
    【Java】Eclipse导出jar包与javadoc
  • 原文地址:https://www.cnblogs.com/LuMinghao/p/14007961.html
Copyright © 2011-2022 走看看