数据结构要求用c语言写用堆栈判断一串字符是否回文,我写的代码如下,不知道哪里错了,哪个大神帮我看下 5

#include"stdio.h"#include"malloc.h"#defineMax20typedefstructnote{chardata[Max];inttop... #include "stdio.h"
#include "malloc.h"
#define Max 20
typedef struct note
{
char data[Max];
int top;
}Seqstack;
typedef struct
{
char data[Max];
int length;
}LinkList;
Seqstack *InitStack(Seqstack *S)
{//初始化栈
S->top=-1;
return S;
}
Seqstack *Push(Seqstack *S, char x)
{//进栈
if(S->top<Max-1&&S->top>=-1)
{
S->top++;
S->data[S->top]=x;
}
else
printf("Error!!!");
return S;
}
Seqstack *Pop(Seqstack *S)
{//出栈
if(S->top>=0)
{
S->top--;
}
else
printf("Error");
return S;
}
LinkList *Sqlset()
{//初始化顺序表,输入表长和各个元素
LinkList *L;
int a;
L=malloc(sizeof(LinkList));
printf("输入表中元素的个数");
scanf("%d",&a);
printf("请输入每个元素的值");
for(L->length=0;L->length<a;L->length++)
{
scanf("%c",&L->data[L->length]);
}
return (L);
}
Huiwen(LinkList *S)
{
Seqstack *L;
int i,flag=1;
L=(Seqstack *)malloc(sizeof(Seqstack));
L->top=-1;
if(S->length%2==0)
{
for(i=0;i<S->length/2;i++)
{
Push(L,S->data[i]);
}
for(i=S->length/2;i<S->length;i++)
{
if(L->top==S->data[i])
{
Pop(L);
}
else
{
flag=0;
break;
}
}
}
else
{
for(i=0;i<(S->length-1)/2;i++)
{
Push(L,S->data[i]);
}
for(i=S->length/2+1;i<S->length;i++)
{
if(L->top==S->data[i])
{
Pop(L);
}
else
{
flag=0;
break;
}
}
}
if(flag)
{
printf("该段字符回文");
}
else
printf("该段字符不回文");
}
main()
{
Seqstack *L;
LinkList *S;
//int n,i;
L=(Seqstack *)malloc(sizeof(Seqstack));
L->top=-1;
S=Sqlset();
Huiwen(S);

}
展开
 我来答
White_MouseYBZ
2014-04-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6719万
展开全部
  1. 把Sqlset函数中的L=malloc(sizeof(LinkList));改成L=(LinkList *)malloc(sizeof(LinkList));。

  2. 把Huiwen函数中的两条if(L->top==S->data[i])都改成if(L->data[L->top]==S->data[i])应该就可以了。

追问
错的,不是问题的关键,我已经解决好了,应该是少了个getchar();
追答

我不相信,哪里也不少getchar()!不过我在scanf("%c",&L->data[L->length]);中的%前加了个空格成了scanf(" %c",&L->data[L->length]);。if(L->top==S->data[i])这句子是谁与谁比较,清楚了吗?L=malloc(sizeof(LinkList));这也能通过编译?看下面改过的代码和执行结果的图片:

可以不采纳,但不要说我错!一个getchar根本解决不了你的问题……拿出来看看可以吗,朋友?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式