我们把正读和反读都相同的字符序列称为“回文”,例如abba和abcba是回文,abcde不是回文。尝试写一个算法判别读入的一个以@为结束符的字符是否是回文。

输入格式
输入为一行,为待判断的字符串,以@结尾。字符串长度不超过 100100,除最后一个字符外,其余字符均由小写字母组成。

输出格式
输出一行,如果输入的字符串是回文,则输出true;如果输入的字符串不是回文,则输出false。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ERROR 0
#define OK 1typedef struct Queue{char *data;int head, tail, length;
}Queue;void initq(Queue *q, int length) {q->data = (char *)malloc(sizeof(char) * length);q->head = 0;q->tail = -1;q->length = length;
}void pushq(Queue *q, char element) {if (q->tail + 1 >= q->length) {return ERROR;}q->tail++;q->data[q->tail] = element;return OK;
}char out_putq(Queue *q, char *s) {for (int i = q->head; i <= q->tail; i++) {s = q->data[i];}return s;
}void clearq(Queue *q) {free(q->data);free(q);
}typedef struct Stack{char *elements;  int max_size, top_index;
}Stack;void inits(Stack *s, int size) {s->elements = (char *)malloc(sizeof(char) * size);s->max_size = size;s->top_index = -1;
}void pushs(Stack *s, char element) {if (s->top_index + 1 >= s->max_size) {return ERROR;}s->top_index++;s->elements[s->top_index] = element;return OK;
}int empty(Stack *s) {return s->top_index < 0;
}char out_puts(Stack *s, char *s2) {while (!empty(s)){s2 = s->elements[s->top_index];s->top_index--;}return s2;
}void clears(Stack *s) {free(s->elements);free(s);
}int main() {char *s = {0}, *s1 = {0}, *s2 = {0};Queue *queue = (Queue *)malloc(sizeof(Queue));initq(queue, 100);Stack *stack = (Stack *)malloc(sizeof(Stack));inits(stack, 100);while ((s = getchar())!= '@') {pushq(queue, s);pushs(stack, s);}s1 = out_putq(queue, s);s2 = out_puts(stack, s);if (s1 == s2) {printf("true\n");} else {printf("false\n");}clearq(queue);clears(stack);return 0;
}

回文判断(栈+队列)相关推荐

  1. java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)

    实验二栈和队列的基本操作及其应用 一.实验目的 1.掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用. 2.掌握栈和队列的特点,即后进先出和先进先出的原则. 3.掌握栈和队列的基本运算, ...

  2. 数据结构:使用链栈实现回文判断

    题目: 回文判断 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如'序列1&序列2'模式的字符序列.其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序列.例 ...

  3. 专业课-数据结构(回文判断实验)

    实验内容: 数据结构-用C语言描述(耿国华)P111实习题1 回文判断. 称正读与反读都相同的字符序列为"回文"序列. 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否 ...

  4. 回文判断 【问题描述】 回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子,判断其是否是回文。 【输入形式】 输入一个最大长度不超过50个字符的句子 【输出形式】 Yes/No

    回文判断 [问题描述] 回文是正读和倒读都一样的句子.读入一个最大长度不超过50个字符的句子,判断其是否是回文. [输入形式] 输入一个最大长度不超过50个字符的句子 [输出形式] Yes/No [输 ...

  5. java判断回文用valueof_回文判断 - 平行宇宙 - ITeye博客

    回文 把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环. 锦字回文 前秦时期,秦州刺史窦滔因得罪了苻坚的手下大官被流放到流沙县.夫妻天各一方,他的妻子苏蕙特地在一 ...

  6. java的回文是什么_Java实现回文判断

    1 问题描述 给定一个字符串,如何判断这个字符串是否是回文串? 所谓回文串,是指正读和反读都一样的字符串,如madam.我爱我等. 2 解决方案 解决上述问题,有两种方法可供参考: (1)从字符串两头 ...

  7. 回文判断--链表实现

    1.问题 回文是从前面到后面或从后面到前面逐个字母地读,都是一样得单词或短语.例如,"reviver"和"Able was I ere I saw Elba"都 ...

  8. Python回文判断代码优化与6个思考题

    送个福利:清华大学出版社和新宝图书专营店联合推出正版特价图书<Python程序设计开发宝典>,原价69元,特价47.6元,详情:https://detail.tmall.com/item. ...

  9. 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)

    对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度. 由于空间复杂度的要求,需要就地操作链表,不能开辟多余 ...

最新文章

  1. python 字符串转字节数组
  2. windows server 2008R2下的mysql主从同步配置
  3. 【ArcGIS Pro风暴】Data Interoperability Tools快速将CASS等高线dwg转为shp案例教程
  4. 新书进展和我的决定。
  5. HA应用之 -- corosync+pacemaker
  6. 利用划分树求解整数区间内第K大的值
  7. 服务器主板阵列创建!创建磁盘阵列RAID0、RAID1图文方法
  8. MyBatis分页插件PageHelper
  9. 计算机专业毕业顶岗实习周记,计算机专业毕业顶岗实习周记10篇
  10. matlab从无到有系列(二):矩阵运算基础
  11. 设置 CentOS linux Numlock默认开启
  12. 全球与中国云计算数据中心IT资产处置(ITAD)市场深度研究分析报告
  13. CVTE嵌入式应用开发长期实习生线上笔试+线上面试(一面)
  14. 使用pm命令安装或卸载apk,静默安装、卸载方法
  15. 微信开发者工具中预览ApiCloud生成代码
  16. php页面静态化,ob缓存方法
  17. Angular 2.0 文本拖拽
  18. Speedoffice(PPT)如何做动画演示效果
  19. 详解B2B、B2C、C2B、C2C、O2O的含义及区别
  20. 伊斯坦布尔之旅第二天:托普卡帕宫与神圣和平教堂与考古博物馆

热门文章

  1. 2小时c++与ros教学
  2. maven docker 插件集成的几个小坑
  3. hibernate VS mybatis
  4. Python基础python变量
  5. Java中调用文件中所有bat脚本
  6. 大数据下的精准营销,媒介们将何去何从
  7. extJS 中 ext.data 介绍
  8. Mr.J-- jQuery学习笔记(二十)--节点操作方法
  9. ROS-SLAM仿真-hector
  10. JNI-获取Java对象的成员变量-GeInttField()