| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:利用栈判断回文,很简单的要求,可就是弄不出来啊
取消只看楼主 加入收藏
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:3 
利用栈判断回文,很简单的要求,可就是弄不出来啊
#include<stdio.h>
#include<stdlib.h>
#define STACK  100
#define  STACKINCREMENT   10
typedef struct{
    char *base;
    char *top;
    int stacksize;
} sqstack;
int initstack(sqstack &s)
{  s.base=(char *)malloc(STACK *sizeof(char));
       if(!s.base) exit(0);
       s.top=s.base;
       s.stacksize=STACK;
       return 1;
}
int push(sqstack &s,char c)
{ if(s.top-s.base>=s.stacksize){
      s.base=(char *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(char));
      if(!s.base)  exit(0);
       s.top=s.base+s.stacksize;
       s.stacksize+=STACKINCREMENT; }
      *s.top++=c;
      return 1;
}

int judge(sqstack &s,sqstack &q)
{   int n;
   
    do
    {   if( (*s.top--)-(*q.top--)!=0)  {n=0;break;}/*请问我这里有啥问题么?*/
            else n=1;
    } while(q.top!=q.base);
    return n;
}
pop(sqstack &s,char e){
     if(s.top==s.base)return 0;
       e=*--s.top;
       return 1;
}
main()
{  sqstack s,q,p;char c;int n;
    initstack (s);
    initstack (q);
    initstack (p);
    printf("put a charity end up with '@'\n");
    while(c!='@')
    { scanf("%c",&c);
       push(s,c);
       push(p,c);
    }
    do
    {pop(p,c);push(q,c);}
       while(p.top!=p.base);
     n=judge(s,q);
    if(n==1) printf("Yes,it is \n");
      if(n==0) printf("No,it is not\n");
}
搜索更多相关主题的帖子: return include top 
2012-10-13 22:06
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:0 
   怎么没人啊?太简单了?好吧,那我就说说自己的思路,免得大牛们说我不思进取,拿来主义。
   其实思路很简单,建栈、取元素、放元素这样的样板就不说了,说说主要的。为了实现判断回文,我建了三个栈,两个存放相同的元素,另一个作为存储栈存储倒着的元素。然后比较正倒元素是不是一样,由于我这里是char型,因此我用ASC||码来实现判断。一旦有一次不一样,就返回0,说明不是回文。如果都一样,那么就是回文。思路很简单,我就是想请大家看看写法上有啥错误。
 
2012-10-13 22:47
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:0 
回复 3楼 寒风中的细雨
哥啊,那确实有点问题,不过还是不能出现正确结果,无论输入的是否是回文,他都显示“no,it is not”。这是为什么啊?
2012-10-14 23:46
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:0 
回复 6楼 寒风中的细雨
真是太感谢了
2012-10-17 00:03
快速回复:利用栈判断回文,很简单的要求,可就是弄不出来啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019605 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved