数据结构(C语言版) 栈和队列 算法设计Demo2
Posted Aiden (winner)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言版) 栈和队列 算法设计Demo2相关的知识,希望对你有一定的参考价值。
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
[题目分析]
将字符串前一半入栈,然后,栈中元素和字符串后一半进行比较。即将第一个出栈元素和后一半串中第一个字符比较,若相等,则再出栈一个元素与后一个字符比较,……,直至栈空,结论为字符序列是回文。在出栈元素与串中字符比较不等时,结论字符序列不是回文。
[算法描述]
#define StackSize 100 //假定预分配的栈空间最多为100个元素
typedef char DataType;//假定栈元素的数据类型为字符
typedef struct
DataType data[StackSize];
int top;
SeqStack;
int IsHuiwen( char *t)
//判断t字符向量是否为回文,若是,返回1,否则返回0
SeqStack s;
int i , len;
char temp;
InitStack( &s);
len=strlen(t); //求向量长度
for ( i=0; i<len/2; i++)//将一半字符入栈
Push( &s, t[i]);
while( !EmptyStack( &s))
// 每弹出一个字符与相应字符比较
temp=Pop (&s);
if( temp!=S[i])
return 0 ;// 不等则返回0
else i++;
return 1 ; // 比较完毕均相等则返回 1
以上是关于数据结构(C语言版) 栈和队列 算法设计Demo2的主要内容,如果未能解决你的问题,请参考以下文章