小问题,大家随便看一下,拯救一下我这个小菜鸟
题目:编写一个算法利用顺序栈判断一个字符串是否是对称串。所谓对称串是指从左向右读和从右向左读的序列相同。我的程序:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{ int data[10];
int top;
}SqStack;
void InitStack(SqStack *&s)
{ s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
int Push(SqStack *&s,int e)
{ if(s->top=-1)
return 0;
s->top++;
s->data[s->top]=e;
return 1;
}
int Pop(SqStack *&s,int &e)
{ if(s->top==-1)
return 0;
e=s->data[s->top];
s->top--;
return 1;
}
int symmetry(int a[]) //书上给出的算法
{ int i;
int e;
SqStack *st;
InitStack(st);
for(i=0;a[i]!='\0';i++)
Push(st,a[i]);
for(i=0;a[i]!='\0';i++)
{ Pop(st,e);
if(a[i]!=e)
return(0);
}
return(1);
}
void main( )
{
int a[10]={1,2,3,4,5,5,4,3,2,1};
int m;
m=symmetry(a);
switch(m)
{
case 0:printf("%s\n","wrong");break;
case 1:printf("%s\n","right");break;
}
}
运行无错误,但是运行结果总是显示“wrong”,没有显示“right”的时候,是不是我的数组赋值错了