回文数是指各位数字左右对称的数,如121,131,11等。
目标寻找11~999之间的数字m,使得其满足m、mm、mm*m均为回文数。
栈的性质就是先进后出,所以基本思路就是按照这个性质对出去的数与原来进来的数进行比较
源码如下:
#include#define MAX 100 typedef char ElemType; typedef struct{ ElemType *base; // 栈底指针 ElemType *top; // 栈顶指针 ElemType stacksize; // 栈最大容量 }Stack; void InitStack(Stack &s){ // 栈的初始化 s.base = new ElemType[MAX]; if(!s.base) return; // s.top = s.base; s.stacksize = MAX; } void push(Stack &s,ElemType e){ // 入栈 *s.top++=e; // 元素e压入栈顶,栈顶指针加一 return; } int main(){ int flag = 1; Stack s; InitStack(s); ElemType arr[MAX]; int i = 0; int j = 0; int mid; while((arr[i] = getchar()) != 'n'){ push(s,arr[i]); i++; } mid = i / 2; ElemType e; for(j = 0; j < mid; j++){ e = *(--s.top); if(arr[j] != e){ flag = 0; break; } } if(flag){ printf("是n"); }else{ printf("不是n"); } return 0; }
运行结果如下:



