在刚才的裁判程序的基础上只编写int IsHuiwen Stack &stchar t函数其中 st 和 t 都是用户传入的参数。 st 是使用的栈; t 是需要判断的字符串。函数返回1或0是回文函数返回1不是回文函数返回0。请用C语言回答
以下是代码实现:
#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。
原文地址: https://www.cveoy.top/t/topic/bjXv 著作权归作者所有。请勿转载和采集!