回文:
一串字符从左到右和从右到左是一样的序列,叫做回文。
如:qertreq;
同样的,形如 123565321的收谷子叫做回文数。
回文判断:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define ERROR 0
#define OK 1
typedef struct Stack {
char *elements;
int top_index, max_size;
} Stack;
void init(Stack *s,int length) {
s->elements = (char *)malloc(sizeof(char) * length);
s->max_size = length;
s->top_index = -1;
}
int push(Stack *s,char element) {
if (s->top_index >= s->max_size - 1) {
return ERROR;
}
s->top_index++;
s->elements[s->top_index] = element;
return OK;
}
void clear(Stack *s) {
free(s->elements);
free(s);
}
int main() {
Stack *ini = (Stack *)malloc(sizeof(Stack));
Stack *fia= (Stack *)malloc(sizeof(Stack));
init(ini, 20);
init(fia, 20);
char now;
int index = ini->top_index;
while (scanf("%c",now) != '@'){
push(ini,now);
}
for (int i = 0; i < ini->top_index; i++){
fia->elements[i] = ini->elements[index];
index--;
}
int flag = 0;
for (int i = 0; i < ini->top_index; i++){
if (fia->elements[i] != ini->elements[i]){
flag = 1;
}
}
if (flag == 0){
printf("ture");
}else{
printf("false");
}
clear(ini);
clear(fia);
return 0;
}
回文数判断:
bool isPalindrome(int num){
if(num < 0 || (num % 10 == 0 && num != 0))
return false;
int reverse = 0;
while(num > reverse){
reverse = reverse * 10 + num % 10;
num /= 10;
}
return num == reverse || num == reverse / 10;
}