【栈和队列 课后习题二---算法设计】 (2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
[题目分析] 将字符串前一半入栈,然后,栈中元素和字符串后一半进行比较。即将第一个出栈元素和后一半串中第一个字符比较,若相等,则再出栈一个元素与后一个字符比较,……,直至栈空,结论为字符序列是回文。在出栈元素与串中字符比较不等时,结论字符序列不是回文。 [算法描述] #defineStackSize100//假定预分配的栈空间最多为100个元素 typedefcharDataType;//假定栈元素的数据类型为字符 typedefstruct {DataTypedata[StackSize]; inttop; }SeqStack; intIsHuiwen(char*t) {//判断t字符向量是否为回文,若是,返回1,否则返回0 SeqStacks; inti,len; chartemp; InitStack(&s); len=strlen(t);//求向量长度 for(i=0;i
举一反三
- 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
- 回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列
- 请设计一个算法,使用栈,判断一个字符串是否为回文。回文:是指正读反读均相同的字符序列,如abba和abdba都是回文,而hello就不是回文。(提示:使用数组存储一个字符串,然后将一半字符入栈。)
- 通常称正读和反读都相同的字符序列为“回文”,例如,“abcdeedcba”、“abcdcba”是回文。若字符序列存储在一个单链表中,编写算法判断此字符序列是否为回文。(提示:将一半字符先依次进栈)
- 假设称正读和反读都相同的字符序列为“回文”,例如,“abcddcba”、 “qwerewq”是回文,“ashgash”不是回文。是写一个算法判断读入的一个以‘@’为结束符的字符序列是否为回文。
内容
- 0
假设正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’ 和‘ababab’则不是回文。假设一字符序列已存入计算机,请分析用线性表、堆栈和队列等方式正确输出其回文的可能性?
- 1
编程判断一个字符串是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,如字符序列“ACBDEDBCA”是回文。
- 2
试写一个算法,判别读入的一个以‘@’为结束符的字符序列是否是“回文”
- 3
从键盘上输入字符判断是否是回文,回文就是一个字符从左向右和从右向左读是一样的,如输入abcdcba,是回文;1234554321也是回文(回文数),请编程判断
- 4
针对串的顺序表示写一算法,判断该字符串是否是回文(即正读与反读相言,如“abcba” 是一个回文,而"abc"则不是)。