栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-10

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-10

PTA题目: 字符串对称

注: 本题纯使用C语言进行编写

  1. 题目要求

要求使用C语言栈的方法来写一个代码判断字符串是否是对称字符串,比如abccba和abcba都属于中心对称,从左到右与从右到左来看都是相同的序列,它们就属于是对称字符串。是则输出yes,否则输出no。

以下是实现代码:

#include 
#include 
typedef struct
{
 char data[1000];
 int top;
} SqStack;
int main(void)
{
SqStack *s=(SqStack *)malloc(sizeof(SqStack));
 s->top=-1;//初始顺序栈的栈顶下标为-1
 int Maxsize;
 char str[1000];
 gets(str);
 Maxsize=strlen(str);//获取字符串的长度并把它设为data数组的最大下标加一。
 char e;
 int flag=0;//元素全部进栈
 
for(int i=0;str[i]!='';i++)
 {
 	if(s->top==Maxsize-1)
 {
 	return 0;
  }
  s->top++;//首先栈顶指针累加,再把元素存进栈顶指针处。
  s->data[s->top]=str[i];
  }
 for( int i=0;str[i]!='';i++)
 {
 	if(s->top==-1)
 {
 	return 0;
  }
 e=s->data[s->top];//元素出栈时首先把栈顶指针t op处的元素取出放在e中,再将栈顶指针减一。
  s->top--;
  if(str[i]==e)
  {
  	flag++;
  }
  
  }
 if(flag==Maxsize)// flag如果与元素个数相等即可知道所求字符串为对称字符串。
 {
 	printf("yes");
  }
  else{
  	printf("no");
  }
  return 0;
}

由于本文是仓促完成,遗漏与不足在所难免,有好的建议和更好的方法可以在评论里提及,我们一起学习,一起进步。我是Vatij,一个不想写程序的bug菜鸟。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号