请高手用C语言写一段判断是否是回文的程序

问题的要求比较复杂要求写3个函数,main,strip,reversestrip函数的功能就是把你输入的东西变成标准形式(只包括小写字母或者数字),比如:输入Thequi... 问题的要求比较复杂

要求写3个函数,main, strip,reverse

strip函数的功能就是把你输入的东西变成标准形式(只包括小写字母或者数字),比如:输入The quick fox! 就转换为 thequickfox

reverse函数的空能就是把strip的输出结果颠倒,比如 hello would转换成 olleh

main函数的功能就是判断strip函数和reverse的输出结果是否相同,如果相同,比如:1234321则输出:是回文,否则输出:不是回文。

请高手指教!谢谢
展开
 我来答
百度网友6205bc1
2008-11-04 · TA获得超过6004个赞
知道大有可为答主
回答量:5933
采纳率:20%
帮助的人:2782万
展开全部
栈实现的
#include<stdio.h>
#include<stdlib.h>
#define MAXCHAR 40

struct node
{
char data;
struct node *next;
};
int ishs(struct node *head,int n)
{
char stack[MAXCHAR/2];
struct node *p = head;
int top = 0;

while(top<n/2) //前半部分元素入栈
{
stack[top] = p->data;
top++;
p = p->next;
}
if(n%2==1) //n为奇数
p = p->next;
top--;

while(top>=0 && p!=NULL && stack[top]==p->data) //边退栈边比较
{
top--;
p = p->next;
}
if(top==-1 && p==NULL) //栈空且链表比较完毕,是回文数
return 1;
else return 0;
}
void main(void)
{
char s[MAXCHAR];
struct node *head = NULL,*p,*q;
int i=0;

printf("输入一个数:");
scanf("%s",s);

while(s[i]!='\0') //建立字符串单链表
{
p = (struct node*)malloc(sizeof(struct node));
p->data = s[i];
p->next = NULL;
if(head==NULL)
{
head = p;
q = p; //q总指向最后一个结点
}
else
{
q->next = p;
q = p;
}
i++;
}
if(ishs(head,i))
printf("%s是回文数\n",s);
else
printf("%s不是回文数\n",s);
}
祈湉帖可佳
2020-05-28 · TA获得超过4056个赞
知道大有可为答主
回答量:3140
采纳率:26%
帮助的人:217万
展开全部
栈实现的
#include<stdio.h>
#include<stdlib.h>
#define
MAXCHAR
40
struct
node
{
char
data;
struct
node
*next;
};
int
ishs(struct
node
*head,int
n)
{
char
stack[MAXCHAR/2];
struct
node
*p
=
head;
int
top
=
0;
while(top<n/2)
//前半部分元素入栈
{
stack[top]
=
p->data;
top++;
p
=
p->next;
}
if(n%2==1)
//n为奇数
p
=
p->next;
top--;
while(top>=0
&&
p!=NULL
&&
stack[top]==p->data)
//边退栈边比较
{
top--;
p
=
p->next;
}
if(top==-1
&&
p==NULL)
//栈空且链表比较完毕,是回文数
return
1;
else
return
0;
}
void
main(void)
{
char
s[MAXCHAR];
struct
node
*head
=
NULL,*p,*q;
int
i=0;
printf("输入一个数:");
scanf("%s",s);
while(s[i]!='\0')
//建立字符串单链表
{
p
=
(struct
node*)malloc(sizeof(struct
node));
p->data
=
s[i];
p->next
=
NULL;
if(head==NULL)
{
head
=
p;
q
=
p;
//q总指向最后一个结点
}
else
{
q->next
=
p;
q
=
p;
}
i++;
}
if(ishs(head,i))
printf("%s是回文数\n",s);
else
printf("%s不是回文数\n",s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式