每日一练算法题(使用栈完成回文判断)

news/2024/9/29 4:07:01/

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

函数接口定义:

int IsPalindrome(char s[]);  //判断字符串s是否回文。

其中 s 是用户传入的参数,其值为待判断字符串。如果s 是回文,则返回值为1,否则返回值为0。

特别说明:本题要求使用栈的基本操作完成回文的判断。
栈的定义如下:

#define Stack_Size 50
typedef char ElemType;
typedef struct
{      ElemType  data[Stack_Size]; int  top; 
}SeqStack;//栈的基本操作函数定义
SeqStack* InitStack();  //栈初始化
int IsEmpty(SeqStack *S); //栈判空
int IsFull(SeqStack *S);  //栈判满
int Push(SeqStack * S, ElemType x);  //  入栈
int Pop(SeqStack * S, ElemType *x);  //  出栈
int GetTop(SeqStack *S, ElemType *x); // 取栈顶元素

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define TRUE 1
#define FALSE 0#define Stack_Size 50
typedef char ElemType;
typedef struct
{      ElemType  data[Stack_Size]; int  top; 
}SeqStack;//栈的基本操作函数定义
SeqStack* InitStack();  //栈初始化
int IsEmpty(SeqStack *S); //栈判空
int IsFull(SeqStack *S);  //栈判满
int Push(SeqStack * S, ElemType x);  //  入栈
int Pop(SeqStack * S, ElemType *x);  //  出栈
int GetTop(SeqStack *S, ElemType *x); // 取栈顶元素int IsPalindrome(char s[]);  //判断字符串s是否回文。main()
{char s[20];scanf("%s",s);if(IsPalindrome(s))printf("It's Palidrome!\n"); elseprintf("It's not Palidrome!\n");
}SeqStack* InitStack()
{SeqStack *s;s=(SeqStack *)malloc(sizeof(SeqStack));s->top=-1;return s;
}
int IsEmpty(SeqStack *S)     
{return(S->top==-1?TRUE:FALSE);
}
int IsFull(SeqStack *S)
{return(S->top== Stack_Size-1?TRUE:FALSE);
}
int Push(SeqStack * S, ElemType x)
{if(S->top== Stack_Size-1)  return(FALSE); S->top++;S->data[S->top]=x;return(TRUE);
}
int Pop(SeqStack * S, ElemType *x)
{     if(S->top==-1)     return(FALSE);*x= S->data[S->top];S->top--;    return(TRUE);
}
int GetTop(SeqStack *S, ElemType *x)
{  if(S->top==-1)return(FALSE);*x = S->data[S->top];return(TRUE);
}/* 请在这里填写答案 */

输入样例:

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

abba

输出样例:

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

It's Palidrome!
以下是使用栈完成回文判断的代码:int IsPalindrome(char s[]) {SeqStack *stack = InitStack();int len = strlen(s);int i;for (i = 0; i < len; i++) {Push(stack, s[i]);}for (i = 0; i < len; i++) {char topChar;Pop(stack, &topChar);if (s[i]!= topChar) {free(stack);return 0;}}free(stack);return 1;
}

http://www.ppmy.cn/news/1531761.html

相关文章

【Python】多个dataframe存入excel的不同的sheet表里,而不会被覆盖的方法

我发现&#xff0c;我原来用的多个工作簿存入的方法&#xff0c;发现不太可行&#xff0c;如果我用原来的方法&#xff0c;然后for循环&#xff0c;新的dataframe会把原来的覆盖掉&#xff0c;然后只剩下一个工作薄。原先的代码&#xff1a; with pd.ExcelWriter(file_name ) …

备考中考的制胜法宝 —— 全国历年中考真题试卷大全

在中考这场重要的战役中&#xff0c;每一分都至关重要。为了帮助广大考生更好地备考&#xff0c;我们精心整理了这份全国历年中考真题试卷大全&#xff0c;旨在为大家提供最全面、最权威的备考资料。 文章目录 1. 全科覆盖&#xff0c;无遗漏2. 历年真题&#xff0c;权威可靠3.…

feign的全局拦截器和局部拦截器

拦截器和过滤器在java中用的最多的应该是处理一些head头&#xff0c;进行鉴权&#xff0c;签名等处理。feign也不例外。 一、feign全局拦截器 全局拦截器对每个feign客户端都生效 配置这里省略。 全局拦截器定义 package com.vvvtimes.interceptor;import feign.RequestIn…

Android常用C++特性之std::optional

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::optional 是 C17 引入的一个模板类&#xff0c;用于表示可能缺失的值。它提供了一种安全的方法来处理可选值&#xff0c;允许变量在某些情况下没有值&#xff08…

git-repo系列教程(3) git-repo https证书认证问题

文章目录 问题描述解决步骤1.下载证书2.测试证书是否正常3.设置环境变量 总结 问题描述 在使用git repo 同步仓库时,发现不能同步,出现如下提示错误: % Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left …

leetcode刷题day27|贪心算法Part01(455.分发饼干、376. 摆动序列、53. 最大子序和)

前言&#xff1a; 贪心的本质选择每一阶段的局部最优&#xff0c;从而达到全局最优。 455.分发饼干 思路&#xff1a;局部最优-大饼干喂给胃口大的&#xff0c;充分利用饼干尺寸喂饱一个&#xff1b;全局最优&#xff1a;喂饱尽可能多的小孩。可以尝试使用贪心策略&#xff0…

数据结构——二叉树的性质和存储结构

二叉树的抽象类型定义 基本操作&#xff1a; CreateBiTree(&T&#xff0c;definition) 初始条件&#xff1a;definition给出二叉树T的定义。 操作结果:按definition构造二叉树T。 PreOrderTraverse(T) 初始条件:二叉树T存在。 操作结果:先序遍历T&#xff0c;对每个结…

ECharts图表图例3

java 用ecplise软件 可视化图表 代码&#xff1a; <! DOCTYPE html > < html > < head > < meta charset " UTF -8"> <1--引入 ECharts 脚本--> < script src " js / echarts . js "></ script > <…