6-2 回文序列

6-2 回文序列6 2 回文序列 回文序列 charhwjudgec

大家好,欢迎来到IT知识分享网。

邮电的吗,pintia有问题,拿着答案多提交几遍就过了

回文序列是指正读反读均相同的字符序列,如“abcd&dcba@是一个回文序列,abcd&bac@非回文序列。字符序列中&符号标识回文序列的中间位置,@符号表示序列结束。试写一个算法,使用栈的基本操作判定给定的字符串是否为回文序列。

函数接口定义:

在这里描述函数接口。例如: char * hw_judge (char *str);

其中 str 是带判断的字符串。 函数须返回 YES或 NO 表示判断结果。

裁判测试程序样例:

#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { int top; char elem[128]; }SeqStack; SeqStack *initStack() { SeqStack *s; s=(SeqStack *)malloc(sizeof(SeqStack)); s->top=-1; return s; } int IsEmpty(SeqStack *s) { return s->top==-1?1:0; } int IsFull(SeqStack *s) { return s->top==29?1:0; } int push(SeqStack *s,char x) { if(!IsFull(s)) { s->top++; s->elem[s->top]=x; return 1; } else return 0; } int pop(SeqStack *s, char *x) { if(!IsEmpty(s)) { *x=s->elem[s->top]; s->top--; return 1; } else return 0; } int gettop(SeqStack *s, char *x) { if(!IsEmpty(s)) { *x=s->elem[s->top]; return 1; } else return 0; } /* 请在这里填写答案 */ int main() { char str[80]; scanf("%s",str); printf("%s",hw_judge(str)); return 0; }

输入样例:

在这里给出一组输入。例如:

abcd&dcba@ 

输出样例:

在这里给出相应的输出。例如:

YES
char * hw_judge (char *str) { //创建输出语句 char* a1 = "NO\n"; char* a2 = "YES\n"; //创建栈 SeqStack *s=initStack(); //放入栈_放到’&‘ char*s1=str; while(*s1!='&') { push(s,*s1); s1++; } //跳过’&‘ s1++; //开始比较 while(IsEmpty(s)==0&&*s1!='@') { char c=0; char*p=&c; pop(s,p); if(*s1!=c) { return a1; } s1++; } //如果比较结束后栈不为空或指针未直到尾部的’@‘输出NO if(IsEmpty(s)==0||*s1!='@') return a1; return a2; }

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135706.html

(0)
上一篇 2025-07-02 19:33
下一篇 2025-07-02 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信