回文判断(栈+队列)
我们把正读和反读都相同的字符序列称为“回文”,例如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;
}
回文判断(栈+队列)相关推荐
- java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)
实验二栈和队列的基本操作及其应用 一.实验目的 1.掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用. 2.掌握栈和队列的特点,即后进先出和先进先出的原则. 3.掌握栈和队列的基本运算, ...
- 数据结构:使用链栈实现回文判断
题目: 回文判断 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如'序列1&序列2'模式的字符序列.其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序列.例 ...
- 专业课-数据结构(回文判断实验)
实验内容: 数据结构-用C语言描述(耿国华)P111实习题1 回文判断. 称正读与反读都相同的字符序列为"回文"序列. 试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否 ...
- 回文判断 【问题描述】 回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子,判断其是否是回文。 【输入形式】 输入一个最大长度不超过50个字符的句子 【输出形式】 Yes/No
回文判断 [问题描述] 回文是正读和倒读都一样的句子.读入一个最大长度不超过50个字符的句子,判断其是否是回文. [输入形式] 输入一个最大长度不超过50个字符的句子 [输出形式] Yes/No [输 ...
- java判断回文用valueof_回文判断 - 平行宇宙 - ITeye博客
回文 把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环. 锦字回文 前秦时期,秦州刺史窦滔因得罪了苻坚的手下大官被流放到流沙县.夫妻天各一方,他的妻子苏蕙特地在一 ...
- java的回文是什么_Java实现回文判断
1 问题描述 给定一个字符串,如何判断这个字符串是否是回文串? 所谓回文串,是指正读和反读都一样的字符串,如madam.我爱我等. 2 解决方案 解决上述问题,有两种方法可供参考: (1)从字符串两头 ...
- 回文判断--链表实现
1.问题 回文是从前面到后面或从后面到前面逐个字母地读,都是一样得单词或短语.例如,"reviver"和"Able was I ere I saw Elba"都 ...
- Python回文判断代码优化与6个思考题
送个福利:清华大学出版社和新宝图书专营店联合推出正版特价图书<Python程序设计开发宝典>,原价69元,特价47.6元,详情:https://detail.tmall.com/item. ...
- 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)
对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度. 由于空间复杂度的要求,需要就地操作链表,不能开辟多余 ...
最新文章
- python 字符串转字节数组
- windows server 2008R2下的mysql主从同步配置
- 【ArcGIS Pro风暴】Data Interoperability Tools快速将CASS等高线dwg转为shp案例教程
- 新书进展和我的决定。
- HA应用之 -- corosync+pacemaker
- 利用划分树求解整数区间内第K大的值
- 服务器主板阵列创建!创建磁盘阵列RAID0、RAID1图文方法
- MyBatis分页插件PageHelper
- 计算机专业毕业顶岗实习周记,计算机专业毕业顶岗实习周记10篇
- matlab从无到有系列(二):矩阵运算基础
- 设置 CentOS linux Numlock默认开启
- 全球与中国云计算数据中心IT资产处置(ITAD)市场深度研究分析报告
- CVTE嵌入式应用开发长期实习生线上笔试+线上面试(一面)
- 使用pm命令安装或卸载apk,静默安装、卸载方法
- 微信开发者工具中预览ApiCloud生成代码
- php页面静态化,ob缓存方法
- Angular 2.0 文本拖拽
- Speedoffice(PPT)如何做动画演示效果
- 详解B2B、B2C、C2B、C2C、O2O的含义及区别
- 伊斯坦布尔之旅第二天:托普卡帕宫与神圣和平教堂与考古博物馆