回文数(栈)
由于输入的一个回文数可能无穷大,所以要求使用单链表存储该数。
【问题分析】
将用户输入的数以一个单链表的方式存储。从头扫描该单链表,将前面的一半元素入栈,若元素的总个数为奇数,则跳过中间的那个元素,然后开始循环:边退栈边在单链表中后移指针,若当前栈顶元素与单链表中当前节点的值域不相等,则退出循环。最后如果栈空且链表比较完毕,则是回文数,否则不是回文数。
以下:
#include<iostream>
#include<malloc.h>
#define StackSize 100
#define Stackadd 100
using namespace std;
typedef struct{
char *base,*top;
int size;
}Stack;
typedef struct LNode{
char data;
struct LNode *next;
}LNode, *LinkList;
void CreateStack(Stack &S){
//生成空栈
S.base = (char *)malloc(StackSize *sizeof(char));
S.top = S.base;
S.size = Stackadd;
}
void P