回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文。

回文指的是一个字符串从前面读和从后面读都一

样,编写一个算法判断一个字符串是否为回文。

要求:

1)采用链栈实现算法;

2)从键盘输入一个字符串,输出判断结果。

#include"stdio.h"
#include"stdlib.h"
typedef char ElemType;
typedef struct stnode
{
    ElemType data;
    struct stnode *next;
}StNode, *LinkStack;
int huiwen(char str[])
{
    int i = 0;
    char ch;
    StNode *sl = NULL, *p;
    while ((ch = str[i++]) != ‘\0‘)
    {
        p = (StNode *)malloc(sizeof(StNode));
        p->data = ch;
        p->next = sl;
        sl = p;
    }
    i = 0;
    while (sl != NULL)
    {
        p = sl;
        ch = p->data;
        sl = sl->next;
        free(p);
        if (ch != str[i++])
            return 0;
    }
    return 1;
}
void main()
{
    char string[20];
    int hw;
    printf("input a string:");
    gets_s(string);
    hw = huiwen(string);
    if (hw) printf("The string is HUIWEN.");
    else printf("The string is not HUIWEN.");
}

微信公众号   资源库resource

博客  www.resource143.com

原文地址:https://www.cnblogs.com/resource143/p/10657639.html

时间: 2024-12-15 11:19:17

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文。的相关文章

用jQuery判断一个元素的各种状态

用jQuery判断一个元素是否显示 用jQuery判断一个元素是否显示:$(element).is(":visible"); 类似的,判断一个元素是不是第一个子元素:$(element).is(":first-child") 判断一个checkbox元素是否选中:$(element).is(":checked") 判断一个元素是否存在:$(element).length 判断一个字符串中是否包含其他字符串:str.indexOf("ab

C实例--判断一个字符串是否是回文数

回文是指顺读和反读内容均相同的字符串,例如"121","ABBA","X"等.本实例将编写函数判断字符串是否是回文. 引入两个指针变量,开始时,两个指针分别指向字符串的首末字符,当两个指针所指字符相等时,两个指针分别向后和向前移动一个字符位置,并继续比较,直到两个指针相遇,说明该字符串是回文,如果比较过程中发现两个指针指向的字符不相等,则判断该字符串不是回文. 下面是代码的实现部分: #include <stdio.h> #inclu

判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)

回文:字符对称排列的字符串,例如ABCBA 思路:根据队:先进先出和栈: 先进后出的原则,进行比较出队和出栈的字符是否相等.如果相等,则为回文. 创建控制台应用程序. 1 #region 字符节点类 2 class CharNode 3 { 4 public char Char //字符 5 { 6 get; 7 set; 8 } 9 public CharNode Next //下一节点 10 { 11 get; 12 set; 13 } 14 public CharNode(char Cha

判断一个字符串通过变化字符的位置,是否可以组成回文

解法就是判断下字符串中是否有某些字符是奇数个,如果这种字符的个数大于1,说明无法组成回文:小于或等于1可以组成回文. 其中用了strlen(),放到for循环里面容易导致程序运行效率下降,比如输入的字符串很大 10^5个字符时 for(int i=0; i<strlen(string); i++)会导致程序运行很慢.改用: int length = strlen(string); for(int i=0; i<length; i++) 可以很大程度提升效率. #include <stdi

【c语言】判断一个字符串是不是回文字符串

//判断一个字符串是不是回文字符串 #include <stdio.h> #include <assert.h> int panduan( char *p ) { char *q ; assert( *p != NULL ); q = p; while( *p != '\0') { p++; } p--; while(*q != '\0') { if( *p == *q) { p--; q++; } else return -1; } return 1; } int main()

判断一个整数是否是回文

回文指第一个字符和最后一个字符相同,第二个字符与倒数第二个字符相同,以此类推.回文可以是“1221”的形式,也可以是“121”的形式:单个数字也是回文.这里定义负整数不是回文. 第一种做法是把正整数转换成字符串,存储在数组中,分别从左向右和从右向左遍历数组,判断是否是回文.这种方法的缺点是需要使用额外的存储空间. 第二种做法是从个位数开始,依次取出来每一个数,计算逆序后的整数是否与原整数相等.这种做法可能会有溢出的情况发生.为什么?:) 第三种做法是取出首尾数字比较是否相同,如果相同,去掉首尾数

判断一个数字是否为回文数

Determine whether an integer is a palindrome. Do this without extra space.(source) 判断一个数字是否为回文数,并且不使用额外的存储空间. "回文"是指正读反读都能读通的句子,那么回文数,就很容易理解,就是指一个数正反读的值是相同的.还有一个要求是不要使用额外的存储空间. Hints: 要将一个数的最高位与最低位比较,取出一个数的最低位容易(x%10),但要得到高位却很难. Solution 1: 首先得知

判断一个数字是否是回文数字,如果是则打印出100以内的回文数字,若不是只给出提示信息。

回文数字指的是什么呢?什么是回文数字呢? 回文数字的特征是:一组数字,从左读和从右读都是一样的,比如:123.123321.12345654321 public class HuiWenTest{    public static void main(String[] args)    {        Scanner sc = new Scanner(System.in); try        {            System.out.println("请输入你要判断的数字: &quo

判断一个数是否为回文数,字符串是否为回文字符串

使用C语言编写程序 判断一个数是否为回文数.(ps:回文数也是一个数字,数字的特点是正反序是同一个数字,如12321,3443就是回文数). 要判断该数字是否为回文数,可以通过模除得到该数的反序数字,进行比较是否相等来判读. 具体实现如下: void Practice() { int num, value, flag, var; value = 0; flag = 1; scanf("%d", &num); var = num; while(num) {//value存储num