回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文但“good”不是回文,试写一个算法判断给定字符是否为回文。

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include<iostream>

using namespace std;

typedef struct        

  {  

 int stack_size;  

 int top;  

 char* ch;

}Stack;

int InitStack( Stack&s,char* t)  //初始化顺序栈的大小

{    int length = strlen(t);      

 s.ch = (char*)malloc(length * sizeof(char));   //初始化了顺序栈的大小      

 s.stack_size = length;  

 if (s.ch != NULL)    {     

   s.top = 0;   //将顺序栈置空   

 }    

return 0;

}

int Push(Stack& s, char e)  //入栈

{    if (s.top == s.stack_size)// 判断栈是否上溢        return 1;  

 s.ch[s.top] = e;   

 s.top++;          

 return 0;}

char Pop(Stack& s)  //出栈{ 

   char temp;  

 if (s.top == 0) //判断栈是否下溢     

   return 1;  

 else    {      

 s.top--;          

    temp = s.ch[s.top];            

            return temp;  

 }

}

int IsPlalindrome(char* t)  //判断是否为回文{    Stack s;    int len, i = 0;    

InitStack(s, t);            //先初始化栈  

 len = strlen(t);           //求出字符串的长度    for ( i = 0; i < len / 2; i++)     

   Push(s, t[i]);            

    if (len % 2 == 1)        i++;    while (s.top >0)       {     

   if (Pop(s) != t[i])        {      

     return 0;       

     }  

     i++;  

 }  

 return 1;

}

int main(){    

char str[100];  

 printf("请输入一个字符序列:");    scanf("%s",str);  

 if(IsPlalindrome(str))     

   printf("该字符序列为回文序列!\n");    

else    

    printf("该字符序列不是回文序列!\n");    return 0;

}

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值