• 直接看实例吧,用栈判断回文

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     1 #include <stdio.h>
    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 }