以下是代码实现:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXSIZE 100

typedef struct {
    char data[MAXSIZE];
    int top;
} Stack;

void InitStack(Stack *st) {
    st->top = -1;
}

int IsEmpty(Stack st) {
    if (st.top == -1) {
        return 1;
    } else {
        return 0;
    }
}

int IsFull(Stack st) {
    if (st.top == MAXSIZE - 1) {
        return 1;
    } else {
        return 0;
    }
}

int Push(Stack *st, char x) {
    if (IsFull(*st)) {
        return 0;
    } else {
        st->data[++st->top] = x;
        return 1;
    }
}

int Pop(Stack *st, char *x) {
    if (IsEmpty(*st)) {
        return 0;
    } else {
        *x = st->data[st->top--];
        return 1;
    }
}

int IsHuiwen(Stack st, char *t) {
    int i, len;
    len = strlen(t);
    for (i = 0; i < len; i++) {
        Push(&st, t[i]);
    }
    for (i = 0; i < len; i++) {
        char x;
        Pop(&st, &x);
        if (x != t[i]) {
            return 0;
        }
    }
    return 1;
}

int main() {
    Stack st;
    InitStack(&st);
    char *t = "level";
    int result = IsHuiwen(st, t);
    if (result) {
        printf("%s is a huiwen string.\n", t);
    } else {
        printf("%s is not a huiwen string.\n", t);
    }
    return 0;
}

这里只需要实现 IsHuiwen 函数,其他代码和之前的程序基本一致。在 IsHuiwen 函数中,首先将字符串中的每个字符依次入栈,然后再依次出栈与原字符串对比,如果出栈的字符与原字符串中对应位置的字符不同,则不是回文字符串,返回0,否则返回1。

在刚才的裁判程序的基础上只编写int IsHuiwen Stack &stchar t函数其中 st 和 t 都是用户传入的参数。 st 是使用的栈; t 是需要判断的字符串。函数返回1或0是回文函数返回1不是回文函数返回0。请用C语言回答

原文地址: https://www.cveoy.top/t/topic/bjXv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录