| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1505 人关注过本帖
标题:顺序栈判断回文的问题,高手帮忙看哈
只看楼主 加入收藏
wei_fan
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-10-16
结帖率:100%
收藏
 问题点数:0 回复次数:4 
顺序栈判断回文的问题,高手帮忙看哈
#include<stdio.h>
#include<string.h>
#define n 10
typedef struct
{
    char data[n];
    int top;
}seqstack;

void stackinitial(seqstack *ps)
{
    ps->top=-1;
}

int isempty(seqstack *ps)
{
    return ps->top==-1;
}

int isfull(seqstack *ps)
{
    return ps->top>=n-1;
}

void push(seqstack *ps,int e)
{if(isfull(ps))
{
    printf("栈已满\n");
    exit(1);
}
ps->data[++ps->top]=e;
}

char pop(seqstack *ps)
{
    if(isempty(ps))
    {
        printf("空栈!\n");
        exit(1);
    }
    return ps->data[ps->top--];
}

int pair(char a[])
   {
    int i=0;
    char ch,temp;
    seqstack q;
    stackinitial(&q);
    while(ch=a[i++]!='\0')
        push(&q,ch);
        i=0;
    while(!=isempty(&q))
    {
        temp=pop(&q);
        if(temp!=a[i++])
            return 0;
    }
    return 1;
  }

 void main()
 {  
    char a[n];
    int i,j;
    printf("input string\n");
    for(i=0;i<n;i++)
        scanf("%c",&a[i]);
    j=pair(a);
    if(j==1)
        printf("是回文:\n");
    for(i=0;i<n;i++)
        printf("%c",a[i]);
 }

老是出现这样的错误: warning C4013: 'exit' undefined; assuming extern returning int
D:\Vc\c程序\c语言\c++\03.c(53) : error C2059: syntax error : '!='
D:\Vc\c程序\c语言\c++\03.c(59) : error C2059: syntax error : 'return'
D:\Vc\c程序\c语言\c++\03.c(60) : error C2059: syntax error : '}'
Error executing cl.exe.

03.obj - 3 error(s), 1 warning(s)
搜索更多相关主题的帖子: 回文 顺序 判断 
2008-11-01 11:11
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
while(!=isempty(&q))

这句话里的“=”去掉。
2008-11-01 11:32
fantasy_______
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-9-21
收藏
得分:0 
给你个参考下

#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 50
#define OK 1
#define ERROR 0


typedef struct//定义一个栈
{
    char elem[MAXSIZE];
    int top;
}seqstack;


int judge()
{
    seqstack *x=(seqstack *)malloc(sizeof(seqstack));//创建一个栈
    x->top=-1;//栈置为空
    char ch;
    printf("请输入字符串:");
    ch=getchar();//输入一个字符
    while(ch!='&')//循环遇到&结束
    {
        if (ch=='\n')//根据题意,在遇到'&'之前如果用户输入了enter,则enter的之前的字符串一定不是回文字符串,直接返回ERROR
            return ERROR;
        x->top++;//否,则入栈
        x->elem[x->top]=ch;
        ch=getchar();//读取下一个字符
    }
    //至此为止,所有'@'之前的字符均入栈,'&'则被存放在变量ch中
    ch=getchar();//获取'ch之后的'第一个字符
    while (ch!='@')//循环遇到'@'结束
    {
        if (ch==x->elem[x->top])//如果当前字符与栈顶字符相同,则出栈
        {
            x->top--;
        }
        else
            return ERROR;//不同,则说明不符合回文的条件,返回错误提示
        if (x->top==-1)//当栈空时,说明所有栈内的字符均已出栈
        {
            ch=getchar();//此时,获取下一个字符
            if (ch=='\n'||ch=='@')//若这个字符不是'@'或'\n',说明有多余的字符,例如这种情况:abc&cbaa,此时显然不满足回文条件
                return OK;
            else
                return ERROR;
        }
        ch=getchar();//从缓存区获取下一个字符
            
    }
}

int main()
{
    int a;
    a=judge();
    if (a==OK)
        printf("满足条件!!");
    else
        printf("不满足条件!!");
    getchar();
    return 0;

}
2008-11-01 11:56
wei_fan
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-10-16
收藏
得分:0 
求助!判断回文,用数据结构中顺序栈来判断
小弟急啊!望大侠帮忙看哈
2008-11-02 18:06
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 3# 的帖子
经运行测试,结果是错的……
2008-11-02 18:44
快速回复:顺序栈判断回文的问题,高手帮忙看哈
数据加载中...
 
   



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

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