注册 登录
编程论坛 C++教室

小问题,大家随便看一下,拯救一下我这个小菜鸟

真实的地瓜 发布于 2013-09-29 21:34, 563 次点击
题目:编写一个算法利用顺序栈判断一个字符串是否是对称串。所谓对称串是指从左向右读和从右向左读的序列相同。
我的程序:
#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”的时候,是不是我的数组赋值错了
4 回复
#2
sunny孙2013-09-29 22:35
这都不是字符串,当成字符串处理,漏洞百出,
#3
pauljames2013-09-30 07:09
可以用两个指针,一个指向头,一个指向尾,然后逐个移动比较就行了
#4
qunxingw2013-09-30 09:05
书上给的算法应没什么问题,但你套用他总要作出适合你题的修改
#5
3037709572013-09-30 17:48
……无语问楼主……
1