2016年8月1日13:55:05
编写一个算法,判断任意给定的字符序列是否是回文序列,
什么是回文序列?
所谓回文是指一个字符序列顺着看和倒着看是完全相同的字符序列,例如12344321,12321
分析:可以通过构造栈和队列来实现,可先把任意给定的字符序列存放到队列和栈中,然后将字符序列出队和出栈,
比较出栈和出队列的字符是否相等,
1>若相同,则继续出栈,出队列,继续进行比较是否相等,直到堆栈和队列为空,
2>若不同,则说明该字符序列不是回文数,直接输出判断的结果,不是回文数;
3.在比较的过程中,如果堆栈出栈的字符和队列中出队的字符一直相同,此时堆栈和队列都为空时,
说明给点的字符序列是回文数
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef char DataType;
typedef struct node
{
DataType data;
struct node * pNext;
}linkList;
typedef struct stack
{
linkList * pTop;
linkList * pBottom;
}linkStack;
typedef struct
{
linkList * front;
linkList * rear;
}linkQueue;
void initLinkQueue(linkQueue * Q);
void traverseLinkQueue(linkQueue * Q);
int isEmpty(linkQueue * Q);
int enLinkQueue(linkQueue * Q,DataType element);
int deLinkQueue(linkQueue * Q,DataType * element);
int getHead(linkQueue * Q,DataType * element);
void clearLinkQueue(linkQueue * Q);
void initLinkStack(linkStack * S);
int isEmpty(linkStack * S);
int pushLinkStack(linkStack * S,DataType element);
int popLinkStack(linkStack * S,DataType * element);
int getTop(linkStack * S, DataType * element);