全局指针变量无效,,求大神帮助
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(struct linknode)
struct linknode
{
char data;
struct linknode *next;
};
extern void creat();
extern int cp();
struct linknode *head1,*head2;
void main()
{
int k;
system("color 07");
creat();
k=cp();
if(k==1)
printf("该字符序列是回文!!");
else
printf("该字符序列不是回文!!");
}
int cp()
{
int j;struct linknode *p1,*p2;
p1=head1->next;
p2=head2->next;
while(p1->data==p2->data&&p1!=NULL)
{
p1=p1->next;
p2=p2->next;
}
if(p1!=NULL) j=0;
else j=1;
return(j);
}
void creat()
{
struct linknode *p1,*p2,*p3,*p4;int n=0;
head1=(struct linknode *)malloc(len);
head2=(struct linknode *)malloc(len);
p1=p2=(struct linknode *)malloc(len);
p3=p4=(struct linknode *)malloc(len);
printf("请输入数据(以@结束):");
scanf("%c",&p1->data);
while(p1->data!='@')
{
n=n+1;
if(n==1) {head1->next=p1;p3->data=p1->data;head2->next=p3;p1->next=NULL;}
else
{
p3->data=p1->data;
p1->next=p2;
p4->next=p3;
head1->next=p1;
}
p2=p1;p4=p3;
p1=(struct linknode *)malloc(len);
p3=(struct linknode *)malloc(len);
printf("请输入数据(以@结束):");
getchar();scanf("%c",&p1->data);
}
p4->next=NULL;
}
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(struct linknode)
struct linknode
{
char data;
struct linknode *next;
};
void creat();
int cp();
struct linknode *head1,*head2;
void main()
{
int k;
system("color 07");
creat();
/*do {*/
/*printf("%c", head1->data);*/
/*head1 = head1->next;*/
/*}while(head1!=NULL); */
k=cp();
printf("%d", k);
if(k==1)
printf("该字符序列是回文!!");
else
printf("该字符序列不是回文!!");
}
int cp()
{
int j;struct linknode *p1,*p2;
p1=head1->next;
p2=head2->next;
while((p1!=NULL
[解决办法]
p2!=NULL) && p1->data==p2->data)
{
/*printf("p1:%c, p2:%c\n", p1->data, p2->data);*/
p1=p1->next;
p2=p2->next;
}
if(p1!=NULL) j=0;
else j=1;
return(j);
}
void creat()
{
struct linknode *p1,*p2,*p3,*p4;int n=0;
head1=(struct linknode *)malloc(len);
head2=(struct linknode *)malloc(len);
p1=p2=(struct linknode *)malloc(len);
p3=p4=(struct linknode *)malloc(len);
printf("请输入数据(以@结束):");
scanf("%c",&p1->data);
while(p1->data!='@')
{
n=n+1;
if(n==1) {
head1->next=p1;
p3->data=p1->data;
head2->next=p3;
p1->next=NULL;
}
else
{
p3->data=p1->data;
p1->next=p2;
p4->next=p3;
head1->next=p1;
}
p2=p1;p4=p3;
p1=(struct linknode *)malloc(len);
p3=(struct linknode *)malloc(len);
printf("请输入数据(以@结束):");
char c;
scanf("%c",&c);
scanf("%c",&c);
p1->data = c;
}
p4->next=NULL;
}