当前位置: 首页 > news >正文

内蒙古兴安盟建设局网站网站百度关键词排名软件

内蒙古兴安盟建设局网站,网站百度关键词排名软件,建e网室内设计网图片,app和网站趋势题目: Qestion: 试写一个算法判定给定的字符向量是否为回文。   回文解释: 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。 主要思路: 因为数据要求不是很严格并且是一个比较简单的…

题目:

  Qestion:试写一个算法判定给定的字符向量是否为回文。

  回文解释: 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。


主要思路:

  1. 因为数据要求不是很严格并且是一个比较简单的题,因此偷懒采用了用线性表来表示,用的是数组来存储字符串,定义了一个结构体Strack,里面含有栈顶指针top和栈内元素个数cnt
  2. 创建一个字符数组char c [max],用scanf将用户输入的字符串传入该char数组。
  3. 统计用户输入字符串的长度,结束标志位char c [i] = '\0',得出该字符串的总长度。
  4. *将用户输入的字符串一半入栈(需要分字符个数位为奇还是为偶两种情况)。
  5. *栈内元素依次与从char c [max] 中间字符的下一位(这里也要分奇偶)开始比较判读该字符串是否为回文字符串。

数据结构与定义:

#define max 20struct Stack
{int cnt; // 统计栈中共有几个元素int top; // 指向栈顶元素的指针
};
Stack A; //字符串的栈
char stack[max];//数组实现的栈的存储结构
char c[max];//用于存放用户输入的字符串

主要操作函数:

//置空栈,默认若栈中没有元素则栈顶指针指向char数组第一位
void InitStack(Stack &S)
{S.top = 0;
}//计算用户输入字符串的长度
int StringLength(char a[])
{int length = 0;for (int i = 0; i < max; i++){if (a[i] != '\0') // 当遇到`\0`时循环结束{length++;}elsebreak;}return length;
}//将用户输入的字符串一半存入栈中,其中char a[]为用于存放用户输入的字符串数组
//S为栈结构体包括栈顶指针和栈内元素个数,length为字符串的长度,char stack为
//用数组实现的栈,用于存储入栈的元素
void PushStringInStack(char a[], Stack &S, int length, char stack[])
{if (length % 2 == 0) //若字符的个数为偶数,则将其一半入栈{for (int i = 0; i < length / 2; i++){stack[S.top] = a[i]; // 将a[i]压入栈中S.top = i + 1; //栈顶指针上移S.cnt++; //栈内元素个数加一}}else // 若字符的个数为奇数,则将其总数减一的一半个数的字符入栈{for (int i = 0; i < (length - 1) / 2; i++){stack[S.top] = a[i]; // 同上S.top = i + 1;S.cnt++;}}
}//判断用户输入的字符是否为回文串
bool IsPalindrome(char stack[], Stack S, char a[], int length)
{int j;if (length % 2 == 0)j = length / 2;elsej = (length / 2) + 1;for (int i = (S.top - 1); i > 0; i--){if (stack[i] == a[j]){j = j + 1;}elsereturn false;}return true;
}

图解:

初始化链表

判断是否为回文字符串


完整代码

#include <stdio.h>
#include <string.h>
#define max 20
struct Stack
{int cnt; int top; 
};bool IsPalindrome(char stack[], Stack S, char a[], int length)
{int j;//j 也可以用S.cnt替代,这只是另一种表示方法,结果是一样的if (length % 2 == 0)j = length / 2;elsej = (length / 2) + 1;for (int i = (S.top - 1); i > 0; i--){if (stack[i] == a[j]){j = j + 1;}elsereturn false;}return true;
}int StringLength(char a[])
{int length = 0;for (int i = 0; i < max; i++){if (a[i] != '\0'){length++;}elsebreak;}return length;
}void InitStack(Stack &S)
{S.top = 0;
}void PushStringInStack(char a[], Stack &S, int length, char stack[])
{if (length % 2 == 0){for (int i = 0; i < length / 2; i++){stack[i] = a[i];S.top = i + 1;S.cnt++;}}else{for (int i = 0; i < (length - 1) / 2; i++){stack[i] = a[i];S.top = i + 1;S.cnt++;}}
}int main()
{Stack A;char stack[max];InitStack(A);char c[max];scanf("%s", c);int length = StringLength(c);PushStringInStack(c, A, length, stack);if (IsPalindrome(stack, A, c, length))printf("true");elseprintf("false");return 0;
}

代码图片

请添加图片描述


结束语

  因为是算法小菜,所以提供的方法和思路可能不是很好,请多多包涵~如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

http://www.yidumall.com/news/21894.html

相关文章:

  • 织梦网站图片无缝滚动怎么做百度百科搜索入口
  • 怎么设计网络营销方案济南公司网站推广优化最大的
  • wordpress页面是什么意思网络优化工作应该怎么做
  • 网站开发设计总结淘宝指数入口
  • 微信投票网站制作百度小程序排名优化
  • 电商网站的支付模块怎么做南宁网站建设网站推广
  • 贵州建设厅网站建筑企业公示栏精准营销方式有哪些
  • vs做网站抖音关键词排名系统
  • 网站后台编辑器不显示百度云网盘资源搜索引擎
  • 上海网站建设哪家做得好百度关键词优化大
  • 网站头部 标签seo综合查询网站源码
  • 奉化网站建设宁波技术好的企业网站制作
  • wordpress个人博客建站系统百度公司排名
  • 怎么样能够为一个网站做推广手机上怎么制作网页
  • 滑县网站建设报价常州seo外包公司
  • 南宁工程建设信息网关键词推广优化
  • 深圳极速网站建设服务器珠海网站建设
  • 西安域名注册网站建设电商seo优化
  • 西安做网站建设广州seo网站管理
  • php语言的网站建设如何引流推广产品
  • 网站设关键字泰州百度关键词优化
  • 企业网站seo诊断工具快速排序优化
  • 潍坊市网站制作三门峡网站seo
  • 温州网站建设模板人民网疫情最新消息
  • 怎么看网站是用什么程序做的哈尔滨企业网站seo
  • 安全的营销型网站制作b2b采购平台
  • 哪个网站可以找人做清洁推广是什么意思
  • 长清治做网站行者seo无敌
  • 做投资的网站好广州头条今日头条新闻
  • 用什么做网站seo搜索引擎优化原理