内容:

回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。

算法分析

将字符串前一半入栈,然后,栈中元素和字符串后一半进行比较。即将第一个出栈元素和后一半串中第一个字符比较,若相等,则再出栈一个元素与后一个字符比较,……,直至栈空,结论为字符序列是回文。在出栈元素与串中字符比较不等时,结论字符序列不是回文。

概要设计

函数

void Init(Stack& S, char* t)

int Push(Stack& S, char e)

int Pop(Stack& S, char& e)

int Empty(Stack S)

int IsPlalindrome(char* t)

#include <stdio.h>
#include <string.h>
#include<stdlib.h>
typedef struct
{int stack_size;char* top;char* base;
}Stack;int InitStack(Stack& S, char* t)  //初始化栈
{int len = strlen(t);S.base = (char*)malloc(len * sizeof(char));if (S.base == NULL)return 0;S.top = S.base;S.stack_size = len;
}//入栈
int Push(Stack& S, char e)
{if (S.top - S.base == S.stack_size)return 0;*S.top++ = e;return 1;
}//出栈
int Pop(Stack& S, char& e)
{if (S.top == S.base)return 0;e = *--S.top;return 1;
}//判空
int Empty(Stack S)
{return (S.top == S.base);
}int IS_HUIWEN(char* t) //判断t[]是否为回文
{Stack S;char e;int i, len;InitStack(S, t);len = strlen(t); //求数组长度for (i = 0; i < len / 2; i++)//将一半字符入栈Push(S, t[i]);if (strlen(t) % 2 == 1)i++;//将最中间的数字跳过while (!Empty(S))// 每弹出一个字符与相应字符比较{Pop(S, e);if (e != t[i])return 0;// 不等则返回0else  i++;}return 1; // 比较完毕均相等
}int main()
{int len = 0;char* a = NULL;printf("你要输入几个字符:");scanf_s("%d", &len);getchar();  //吃掉回车a = (char*)malloc(len * sizeof(char));//给a字符串空间printf("\n请输入待检测的字符串:");scanf_s("%c", &a);if (IS_HUIWEN(a))//判断printf("\n是回文字符串!");elseprintf("\n不是回文字符串!");return 0;
}

回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。相关推荐

  1. 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)

    栈与队列习题:回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文.试写一个算法判定给定的字符向 ...

  2. 回文是指正读反读均相同的字符序列;如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半字符入栈)

    文章目录 1.题目描述 2.算法实现 1.题目描述 回文是指正读反读均相同的字符序列:如"abba"和"abdba"均是回文,但"good" ...

  3. 回文是指正读反读均相同的字符序列,如“abba“和“abdba“均是回文,但“good“不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)

    题目要求:回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文.试写一个算法判定给定的字符向量是 ...

  4. 类C语言--栈与队列习题:回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)

    此代码可以正常运行,下附有运行界面,是是实实在在的类C语言 将字符串前一半入栈,然后,栈中元素和字符串后一半进行比较.即将第一个出栈元素和后一半串中第一个字符比较,若相等,则再出栈一个元素与后一个字符 ...

  5. 回文是指正读反读均相同的字符序列;如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。

    步骤:1.通过InitStack()函数来初始化栈 2.通过Push()函数来压栈 3.通过Pop()函数来弹栈 4.通过StackEmpty()函数来进行栈的判空 5.通过Panduan()函数来进 ...

  6. 1.回文是指正读和反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈。)2.假设以带头结点的循环链

    typedef struct StackNode {char date;struct StackNode* next; }*LinkStack,StackNode; //初始化链栈 void Init ...

  7. P85.2.(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半的字符入栈)(C语言描述)

    做这个题时遇到个bug,即main()中的第一句,我定义了指针str_input用来装输入的字符串,但是后面赋值操作却用了get(),如果要用get()读入字符串的话就应该将str_input定义为数 ...

  8. 回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是 回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列。

    回文,就是将头尾互换,地址位置不需改变. #include <stdio.h> #include <string.h>const int TRUE = 1; const int ...

  9. 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文但“good”不是回文,试写一个算法判断给定字符是否为回文。

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include<iostream> ...

最新文章

  1. python输出大小不同的字体_python – 为什么我的truetype字体大小为11渲染与windows不同?...
  2. 算法学习:强连通分量 --tarjan
  3. Codeforces 976F
  4. scala不使用new关键字创建对象实例
  5. SAP ABAP OData gateway缓存表的存储逻辑 - cache table logic
  6. python中for x in range_python教程:对 [lambda x: x*i for i in range(4)] 理解
  7. java面试题2 牛客:定义类中成员变量时不可能用到的修饰是
  8. 美国防部DARPA发起地下空间挑战赛提供3百万美元巨奖
  9. 2016年百度面试题
  10. 5分绩点转4分_U19男篮世界杯 | 郭昊文空砍23分4篮板5助攻 国青72-86负菲律宾
  11. JMETER 各组件执行顺序与作用域
  12. Shiro入门视频课程——笔记(一)
  13. 第四季-专题8-LINUX系统调用
  14. Socket编程入门(一)实现简单的Socket实例
  15. 软考中级软件设计师学习资料分享
  16. 海量数据处理技巧-转载
  17. java 判断当前时间节气,请问js获取阴历节气后根据节气判断春夏秋冬四季?该怎么写呢...
  18. 2022茶艺师(中级)理论题库及答案
  19. 计算机提示资源管理器停止,电脑开机黑屏并弹出Windows 资源管理器已停止工作该怎么办?...
  20. 大视野1898--Swamp 沼泽鳄鱼

热门文章

  1. spirngcloud
  2. 嵌入式计算机的应用都有哪些,嵌入式系统的应用领域有哪些?
  3. 参考文献是会议论文应该什么格式?
  4. 论文的参考文献格式怎么弄呢?
  5. 异常:com.alibaba.druid.sql.parser.ParserException: ERROR. token : DESC, pos : 72
  6. windows下修改磁盘扇区数据
  7. java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents 解决方法
  8. C2: 宽基窄基 场内场外
  9. 教你一起来做一下SpringBoot蓝天幼儿园管理系统
  10. 【链表】 链表的基本概念及分类