| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 842 人关注过本帖
标题:用栈和队列来判断字符序列是不是回文
只看楼主 加入收藏
下一个转角
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
用栈和队列来判断字符序列是不是回文
void compare(squeue s, sqstack q)
{
   
    char ch1, ch2;
   
    if(s.front==s.rear || q.top==0)
        printf("It's not huiwen.\n");
   
    pop_sqstack(q,ch1);
    pop_squeue(s,ch2);
    while(ch1!=NULL &&ch2!=NULL)
    {
        if(ch1==ch2)
        {
                pop_sqstack(q,ch1);
                pop_squeue(s,ch2);
        }
        else
        {
            printf("It's not huiwen.\n");
            break;
        }
    }
   
}
这是算法,我判断不出来,求教,谢谢啦
搜索更多相关主题的帖子: void 谢谢 compare 
2013-05-13 15:51
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
其他代码呢

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-05-13 21:39
下一个转角
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-13
收藏
得分:0 
回复 2楼 yuccn
#include <stdio.h>

#define N 82

typedef struct node squeue;
struct node
{
    char data[N];
    int front;
    int rear;

};

typedef struct snode sqstack;
struct snode
{
    char elem[N];
    int top;
};

void init_sqstack(sqstack &q);
void push_sqstack(sqstack &q, char x);
void pop_sqstack(sqstack &q, char &x);
void output_sqstack(sqstack q);

void init_squeue(squeue &s);
void push_squeue(squeue &s, char x);
void pop_squeue(squeue &s, char &x);
void output_squeue(squeue s);

void compare(squeue q, sqstack s);

int main(void)
{
    squeue s;
    sqstack l;
    char ch, sh, ch1, sh1;

    printf("init a stack: ");
    init_sqstack(l);
    printf("\npush some number to the stack: ");
    ch=getchar();
    while(ch != ' ')
    {
        push_sqstack(l,ch);
        ch=getchar();
    }

    printf("\ninit a squeue: ");
    init_squeue(s);
    printf("\npush some number to the squeue: ");
    sh=getchar();
    while(sh != ' ')
    {
        push_squeue(s,sh);
        sh=getchar();
    }

    printf("\nwhether is huiwen.");
   
    compare(s,l);
    return 0;
}

void init_squeue(squeue &s)
{
    s.front=s.rear=0;
}

void push_squeue(squeue &s, char x)
{
    if(s.front==(s.rear+1)%N)
        printf("Error.\n");
    else
    {
        s.data[s.rear]=x;
        s.rear=(s.rear+1)%N;
    }
}

void pop_squeue(squeue &s, char &x)
{
    if(s.front==s.rear)
        printf("the squeue is empty.\n");
    else
    {
        x=s.data[s.front];
        //printf("%c",x);
        s.front=(s.front+1)%N;
    }
}

void init_sqstack(sqstack &q)
{
    q.top=0;
}

void push_sqstack(sqstack &q, char x)
{
    if(q.top>=N)
        printf("the sqstack is full.\n");
    else
    {
        q.top++;
        q.elem[q.top]=x;
    }
}

void pop_sqstack(sqstack &q, char &x)
{
    if(q.top==0)
        printf("the sqstack is empty.\n");
    else
    {
        x=q.elem[q.top];
        q.top--;
    }
}

void compare(squeue s, sqstack q)
{
   
    char ch1, ch2;
   
    if(s.front==s.rear || q.top==0)
        printf("It's not huiwen.\n");
   
    pop_sqstack(q,ch1);
    pop_squeue(s,ch2);
    while(ch1!=NULL &&ch2!=NULL)
    {
        if(ch1==ch2)
        {
                pop_sqstack(q,ch1);
                pop_squeue(s,ch2);
        }
        else
        {
            printf("It's not huiwen.\n");
            break;
        }
    }
   
}

void output_squeue(squeue s)
{
    for(s.front=0;s.front<s.rear ; s.front ++)
        printf("%d", s.data [s.front ]);
}

void output_sqstack(sqstack q)
{
    while(q.top>0)
        printf("%c", q.elem[q.top]);
}





2013-05-13 22:40
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:10 
回复 楼主 下一个转角
你这个程序当然判读不出是不是回文了,都没个标志显示是不是回文,最好你就修改一下函数变成有返回值的,是回文返回1,不是返回0。其他的思路貌似没问题了。只是程序不太简练。
2013-05-14 12:33
下一个转角
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-13
收藏
得分:0 
回复 4楼 cuijunchao
我们目前就只学到这,我没有设置返回值,如果它是的话,我就直接显示出是回文就可以了啊,,,我都觉得思路没错,就是判断不出来,,,
2013-05-14 16:53
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:0 
都用了栈和队列了,既然不知道函数的返回值,你们老师没教?不过返回值这个很简单,保证你看一分钟书就会用,去看看吧。还有你运行后显示什么问题呀,你的把错误给出来,要不然哪知道你错在哪里?小问题要学会自己解决。
2013-05-16 12:45
快速回复:用栈和队列来判断字符序列是不是回文
数据加载中...
 
   



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

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