1.函数部分
void IsHuiWen(Stack* s,char c[10]) {
int i,flag=1;
int len = strlen(c);
int mid = len / 2;
for (i = 0;i < mid;i++) {
Push(s, c[i]);
}
if (len % 2 != 0) {
i++;
}
while (s ->top!=-1) {
if (Pop(s) != c[i]) {
flag = 0;
break;
}
else {
i++;
}
}
if (!flag)
{
printf("no!!");
}
else
printf("yes!!");
}
2.全部函数(顺序栈)
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Stack {
char* data;
int top;
int size;
int MaxSize;
}Stack;
Stack* Creat(int MaxSize) {
Stack* s;
s = malloc(sizeof(Stack));
s->data = malloc(sizeof(Stack) * MaxSize);
s->MaxSize = MaxSize;
s->top = -1;
s->size = 0;
return s;
}
void Push(Stack *s,char data) {
if (s->top == s->MaxSize - 1) {
printf("The Stack Is Full");
return 0;
}
s->size++;
s->data[++s->top] = data;
}
char Pop(Stack* s) {
if (s->top == -1) {
printf("The Stack Is Null");
return 0;
}
s->size--;
return s->data[s->top--];
}
void IsHuiWen(Stack* s,char c[10]) {
int i,flag=1;
int len = strlen(c);
int mid = len / 2;
for (i = 0;i < mid;i++) {
Push(s, c[i]);
}
if (len % 2 != 0) {
i++;
}
while (s ->top!=-1) {
if (Pop(s) != c[i]) {
flag = 0;
break;
}
else {
i++;
}
}
if (!flag)
{
printf("no!!");
}
else
printf("yes!!");
}
int main() {
Stack *s;
s = Creat(10);
char data[10];
gets(data);
IsHuiWen(s, data);
return 0;
}