用堆栈判断是否是回文字符串

堆栈的应用之判断字符串是否是回文
C语言代码如下:
栈是一种先进后出的数据结构,队列是先进先出的结构。
“回文数”是一种数字,如:98789,
这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数.
对于测试一个字符串是否是回文的问题,其实也就是判断一个字符串两边是否对称的问题。
这里用堆栈实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define StackSize 100
typedef struct
{
    char data[StackSize];
    int top;  
}SeqStack;
void InitStack(SeqStack *S)
{
    S->top=-1;
}

int EmptyStack(SeqStack *S)
{
    return S->top==-1;
}

int FullStack(SeqStack *S)
{
    return S->top==StackSize-1;
}

void Push(SeqStack *S,char x)
{
    S->data[++S->top]=x;
}

char Pop(SeqStack *S)
{
    return S->data[S->top--];
}

int isHuiwen(char *S,int n)
{
    SeqStack T;
    int i;
    char t1;
    InitStack(&T);
    for(i=0;i<n/2;i++)
    {

        Push(&T,S[i]);
    } 
  
    i=n/2-1;
    while(i>=0)
    {
        t1=Pop(&T);
        if(t1!=S[n-i-1])
            return 0;
        i--;
          
    }
    return 1;
}

int main()
{
    char s[100];
    int n=0;
    scanf("%c",&s[0]);
    while(s[n]!='@')
    {
        scanf("%c",&s[++n]);
    }
  
    if(isHuiwen(s,n-1)==1)
    {
        printf("yes");
    }
    else
    {
        printf("no");     
    }
  
    system("pause");
    return 0;
}


无觅相关文章插件,快速提升流量

, ,

有 3 条《用堆栈判断是否是回文字符串》的回复

  1. ECHO | #1

    。。。。 好技术~~ 下次写个用对列的连连看~~~

  2. | #2

    亲爱的异泪,这个程序好像有点瑕疵呢,比如说,我要是输入assa,它显示不是回文,而asas却是显示是回文的,按理说结果应该刚好都相反才对呀,可是我不会修改,所以,,,有好消息记得告诉我哈!

发表评论