我的程序和正确额差不多,到底那里出错了?

用于判断字符串是否是对称的
#include
#include
#include
#include
#define Max 30
typedef struct{
char data[Max];
int top;
}sqstack;
void Initstack(sqstack *&l)
{
l=(sqstack *)malloc(sizeof(sqstack));
l->top=-1;
}
void Destorystack(sqstack *&l)
{
free(l);
}
bool Pushs(sqstack *&l,char &e)
{
if(l->top==-1)return false;
else
{
e=l->data[l->top];
l->top--;
return true;
}
}
bool Pops(sqstack *&l,char e)
{
if(l->top==Max-1)return false;
else
{
l->top++;
l->data[l->top]=e;
return true;
}
}
bool dcc(char a[])
{
int i;
char e;
sqstack *l;
Initstack(l);
for(i=0;a[i]!='\0';i++)Pops(l,a[i]);
for(i=0;a[i]!='\0';i++)
{
Pushs(l,e);
if(e!=a[i])
{
Destroystack(l);
return false;
}
}
Destroystack(l);
return true;
}
void main()
{
if(dcc("abcd")) printf("ok");else printf("err");
if(dcc("abba")) printf("ok");else printf("err");
}

错误的程序,不知道错在哪里。

#include

#include

#include

#include
#define MaxSize 30
typedef char ElemType;
typedef struct{
ElemType data[MaxSize];
int top; //栈顶指针
}SqStack;
void InitStackS(SqStack *&s)
{

s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;

}
void DestroyStackS(SqStack *&s)
{ free(s);}
bool PopS(SqStack *&s,ElemType &e)
{

if (s->top==-1) //栈为空的情况,即栈下溢出
return false;
e=s->data[s->top]; //取栈顶指针元素的元素
s->top--; //栈顶指针减1
return true;
}
bool PushS(SqStack *&s,ElemType e)
{ if (s->top==MaxSize-1) //栈满的情况,即栈上溢出
return false;
s->top++; //栈顶指针增1
s->data[s->top]=e; //元素e放在栈顶指针处
return true;}

bool symmetry(ElemType str[])
{ int i; ElemType e;
SqStack *st;
InitStackS(st); //初始化栈
for (i=0;str[i]!='\0';i++) //将串所有元素进栈
PushS(st,str[i]); //元素进栈
for (i=0;str[i]!='\0';i++)
{ PopS(st,e); //退栈元素e
if (str[i]!=e) //若e与当前串元素不同则不是对称串
{ DestroyStackS(st);//销毁栈
return false;
}
}
DestroyStackS(st); //销毁栈
return true;
}
void main()
{
if (symmetry("abcdefgfedcba")) printf("OK\n"); else printf("NO OK\n");
if (symmetry("abcdefg")) printf("OK\n"); else printf("NO OK\n");
}
正确的程序

3个回答

怎么叫差不多,肯定是有不一样的地方,你比对一下不就清楚了

 if(e!=a[i])
{
Destroystack(l);
return false;
}
}
Destroystack(l);
return true;
}

Destroystack拼写错了,是Destorystack

原来是我的写程序没有错误,是我文件名出错了,我定义的C++文件写成了.c,应该是.cpp,不过程序还有好多不足之处,多谢指点!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐