标题:写一个栈,判断输入偶数个字符时,是否为回文如abba就是;
只看楼主
逆水寒刘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:76
专家分:117
注 册:2013-3-27
结帖率:90%
 问题点数:0 回复次数:1 
写一个栈,判断输入偶数个字符时,是否为回文如abba就是;
#include<iostream>
#include<cstring>
using namespace std;
#define MAXSIZE  100
typedef char ElymType;
typedef struct
{
    ElymType stack[MAXSIZE];
    int top;
}SqStack;
void InitStack(SqStack *S)//初始化栈;
{
    S->top=-1;
}
int StackEmpty(SqStack *S)//判别栈是否为空,空则返回true;不空则返回false;
{
    if(S->top==-1)
        return true;
    else
        return false;
}
void push(SqStack *S,char m)//入栈操作;
{
        S->top++;
        S->stack[S->top]=m;
   
}
ElymType GetTop(SqStack *S)//读取栈顶元素;
{
    ElymType e=S->stack[S->top];
    return e;
}
void pop(SqStack *S)//出栈操作,无返回值;
{
    S->top--;
}
int JudBack(SqStack *S,char *m)
{
    int t=1;//t用来记录栈中元素的个数;
    int n=0;
    push(S,m[0]);
    for(int j=0;m[j]!='\0';j++)
        t++;
    cout<<t<<endl;//为什么老是输出204啊!求大神指教,并给出改正方案,谢!
    //cout<<n<<endl;
    if(n%2==0)
    {
        for(int i=1;i<n;i++)
        {
            if(m[i]!=GetTop(S))
               push(S,m[i]);
             else if(m[i]==GetTop(S))
                 pop(S);
        }
    }
    if(StackEmpty(S))
        t=1;
    return t;
}
int main()
{
    SqStack S;
    InitStack(&S);
    char ch,m[100];
    cout<<"请输入要检测的字符串:"<<endl;
    int i=0;
    do{
        scanf("%c",&ch);
        if(ch!='@')
            m[i++]=ch;
    }while(ch!='@');
    int p=JudBack(&S,m);
    if(p==1){
        //cout<<p<<endl;
        cout<<"您输入的字符是回文!"<<endl;
    }
    else if(p==0)
    {
        //cout<<p<<endl;
        cout<<"您输入的字符不是回文!"<<endl;
    }
    return 0;
}
我的理念是先入栈第一个元素,而后依次读字符,若与栈顶元素相等则出栈,否则入栈;最后栈为空则是回文;
搜索更多相关主题的帖子: false void include return 
2013-04-14 19:34
逆水寒刘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:76
专家分:117
注 册:2013-3-27
得分:0 
我知道了,最后m数组没有加结束标志,改正为m[i]='\0';
2013-04-14 22:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-404170-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049596 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved