10.3
今天用队列实现了回文,在编写过程中,对于数组的初始化问题,未初始化的数组会存在数组内存无法使用的情况,所以,对于定义的数组以及变量一定要在定义时进行初始化。、
代码如下:
#include<stdio.h>
#include <malloc.h>
#pragma warning(suppress : 4996)
#define MAXQSIZE 100 // 最大队列长度
#define OK 1
#define ERROR 0
struct SqQueue {
char* base;// 初始化的动态分配存储空间
int rear;// 队尾指针,指向队尾元素的后一个元素
int front; // 队头指针,指向队头元素
};
int InitQueue(SqQueue& Q) {// 构造一个空队列 Q
Q.base = (char*)malloc(MAXQSIZE * sizeof(char)); // 为循环队列分配存储空间
if (!Q.base) return 0;// 存储分配失败
Q.front = Q.rear = 0;
return OK;
}
int QueueLength(SqQueue Q) {// 返回队列Q中元素个数,即队列的长度
return ((Q.rear - Q.front + MAXQSIZE) % MAXQSIZE);
}
char EnQueue(SqQueue& Q, char e) {// 插入元素 e 为新的队列尾元素
if ((Q.rear + 1) % MAXQSIZE == Q.front)return ERROR; // 队列满
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAXQSIZE;
return e;
}
int DeQueue(SqQueue& Q, char& e) {// 若队列不空,则删除当前队列Q中的头元素,用 e 返回其值,并返回OK
if (Q.front == Q.rear) return ERROR;
e = Q.base[Q.front];
Q.front = (Q.front + 1) % MAXQSIZE;
return OK;
}
int main() {
SqQueue sq_N;
int n = 0;
char ch_str[100] = {'0'};
char ch_s[100] = {'0'};
char ch_n;
InitQueue(sq_N);
for (int i = 0;; i++) {
ch_n = getchar();
if (ch_n == ' ') {
i--;
}
else if (ch_n == '\n') break;
else {
ch_s[i]= EnQueue(sq_N, ch_n);
}
if (ch_n == '/n') break;
}
n = QueueLength(sq_N);
for (int i = 0; i < n; i++) {
DeQueue(sq_N, ch_str[n-i-1]);
}
int flag = 1;
for (int i = 0; i < n; i++) {
if (ch_str[i] != ch_s[i]) {
flag = 0;
break;
}
}
if (flag == 1) {
printf("该字符串是回文字符串");
}
else printf("该字符串不是回文字符串");
}
原文地址:https://www.cnblogs.com/crimsonyu/p/15365188.html
- Python中对字节流/二进制流的操作:struct模块简易使用教程
- C++ 后台程序实时性能监控
- 系统入侵后的排查思路及心得
- 记一次Linux被入侵的经历
- C++ FFLIB之ffcount:通用数据分析系统
- Python内置数据结构之迭代器知多少?
- Python之解析式您知多少?
- C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
- C++ FFLIB之FFXML: 极简化TinyXml 读取
- 架构高性能网站秘笈(五)——Web组件分离
- 安全编程-c++野指针和内存泄漏
- 稳扎稳打JS——this
- FFLIb Demo && CQRS
- springcloud学习手册-Eureka常见问题总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java开发岗面试题--基础篇(一)
- leetcode链表之找出倒数第k个节点
- MAC下安装nginx的正确姿势 实践笔记
- 关于 ThreadLocal 你需要知道的几点
- 关于Guava ForwardingMap
- http post Request header is too large 开发环境和线上版本解决方案
- 像java一样使用js contains 数组包含方法 实践笔记
- 服务治理之重试篇
- 一次排查线上接口偶发异常耗时引起的思考!
- 台阶很高,青蛙跳不跳?
- 从零开始认识堆排序
- Redis SDS 深入一点,看到更多!
- Centos7下Oracle 11g r2 本地/远程 用exp/imp命令快速导入导出数据 实践笔记
- js常用函数大全107个
- xtraReprot 动态绑定数据 数据列动态