| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 841 人关注过本帖
标题:利用链表判断回文,那里出错了?
取消只看楼主 加入收藏
lovelysssss
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-26
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:0 
利用链表判断回文,那里出错了?


输入字符,判断是不是回文,如abba是回文,以"@"为结束符

#include <stdio.h>
#include <stdlib.h>

typedef int datatype;
typedef struct node
{datatype data;
struct node *next;
}linklist;
 

linklist *CREATLIST()
 {char ch;                   ///尾插法建立链表
 linklist *head,*s,*r;
 head=NULL;
 r=NULL;
 ch=getchar();
 while(ch!='@')
   {s=(linklist *)malloc(sizeof(linklist));
   s->data=ch;
   if(head==NULL) head=s;
   else r->next=s;
   r=s;
   ch=getchar();
   }
if(r!=NULL)r->next=NULL;
return head;
 }   

linklist *PANDUAN(linklist *pp)     /*定义判断是否为回文的函数*/

{
    linklist  *s,*p,*q;
    p=s=q=pp->next;
    while(s!=NULL)    /*s非空*/
    {
        if(s->data==q->data)  /*s的data与q的data相同*/
        {        
            s=s->next;/*对s复位*/
            p=s;
            q=p->next;          /*相同则s移后一位,q移前一位*/
            while(q->next!=NULL)
            {
                p=p->next;
                q=q->next;
            }
            p->next=NULL;
            q=p;         /*对q复位*/
        }
        else    break;
    }
    if(s==NULL) printf("yes\n");  /*s最终为空,则判断为回文*/
    else        printf("no\n");
}

main()
   {
    printf("input the data of the linklist!\n");
    linklist *head;
    head=CREATLIST();
    PANDUAN(head);
    while(1);
   }


怎么样都是输出no
只有输入一个字符时才判断是回文
那里出错了?
新人分少,只有10分,那位帮忙看看。
搜索更多相关主题的帖子: 链表 回文 判断 
2010-11-03 18:21
快速回复:利用链表判断回文,那里出错了?
数据加载中...
 
   



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

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