标题:快帮我看一下,我的回文哪错了
取消只看楼主
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
结帖率:70.59%
已结贴  问题点数:5 回复次数:2 
快帮我看一下,我的回文哪错了
我想用栈和链表实现回文的检查,但始终有个语法错误,还有算法上好像有点错,请大家帮我一下!!!


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
struct M
{
    char*top;
    char*base;
    int size;
};
struct list
{
    char data;
    struct list*next;
};
void init(struct M*n);
void push(struct M*m,char c);
void pop(struct M*m,char*e);

void main()
{
    struct list*p1,*p2,*head;
    struct M sq;
    char ch,e;
    init(&sq);
    head=(struct list*)malloc(sizeof(struct list));
    head=NULL;
    p2=head;
    while((ch=getchar())!='\n')
    {
        push(&sq,ch);
        p1=(struct list*)malloc(sizeof(struct list));
        p1->data=ch;
        p1->next=p2->next;
        p2->next=p1;
        p2=p1;
    }
    p1=head->next;
    pop(&sq,&e);
    while(p1!=NULL)
    {
        if(strcmp(e,p1->data)==0)           显示'strcmp' : cannot convert parameter 1 from 'char' to 'const char *',这是什么意思
        {    p1=p1->next;
        pop(&sq,&e);
        }
        else {
            
            printf("不是回文\n");
            exit(0);
        }
    }
    printf("是回文!\n");
}
void init(struct M*n)
{
    n->base=n->top=(char*)malloc(N*sizeof(char));
    if(!n->base)
    {printf("cant creat!\n");
    exit(0);
    }
    n->top=n->base;
    n->size=N;
}

void push(struct M*m,char c)
{
    if((m->top-m->base)==m->size)
        printf("stack full\n");
    else
        *m->top++=c;
}

void pop(struct M*m,char*e)
{
   
    if(m->top==m->base)
    {
        printf("栈空!\n");
        exit(0);
    }
    else
        *e=*--m->top;
}




我想用栈和链表实现回文的检查,但始终有个语法错误,还有算法上好像有点错,请大家帮我一下!!!
搜索更多相关主题的帖子: 回文 
2010-11-14 22:00
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
得分:0 
回复 4楼 m21wo
首先谢谢你的解答!
能告诉我p1=NULL,为什么不对吗?
还有我用strcmp比较的就是char不是数啊?
2010-11-15 22:31
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
得分:0 
回复 6楼 m21wo
那你告述我下面这个又为什么对啊!!!
a,b不都是指向字符串的指针吗??


#include<stdio.h>
#include<string.h>
int main()
{
    char a[]="abc";
    char b[]="ab";
    if(strcmp(a,b)==0){
        printf("a=b\n");
    }
    else{
        printf("a!=b\n");
    }
}
2010-11-16 12:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-325766-1-1.html




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

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