• 直接看实例吧,用栈判断回文
     1 #include 
     2 #include <string.h>
     3 int  main() {
     4     char a[101], s[101];
     5     int i, len, mid, next, top;
     6 
     7     gets(a); //读入一行字符串
     8     len = strlen(a); //求字符串的长度
     9     printf("%d\n", len);
    10     mid = len/2-1; //求字符串的中点
    11     printf("%d\n", mid);
    12 
    13     top = 0; //栈的初始化
    14     //将mid前的字符依次入栈
    15     for (i = 0; i <= mid; i++)
    16         s[++top] = a[i];
    17 
    18     //判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的起始下标
    19     if (len%2 == 0)
    20         next = mid+1;
    21     else
    22         next = mid+2;
    23 
    24     //开始匹配
    25     for (i = next; i <= len-1; i++) {
    26         if (a[i] != s[top])
    27             break;
    28         top--;
    29     }
    30 
    31     //如果top的值为0,则说明栈内所有的字符都被一一匹配了
    32     if (top == 0)
    33         printf("YES");
    34     else
    35         printf("NO");
    36 
    37     return 0;
    38 }

相关