函数套嵌调用问题
程序代码:#include<stdio.h>
#include<malloc.h>
struct linknode
{
int data;
struct linknode *next;
};
struct linknode *create()//创建单链表
{
int d;
int i=1;
struct linknode *head,*s,*t;
head=NULL;
printf("建立一个单链表,data域数据已0结束:\n");
while(1)
{
printf("%d:",i);
scanf("%d",&d);
if(d==0)
break;
if(i==1)//建立第一个结点
{
head=(struct linknode *)malloc(sizeof(struct linknode));
head->data=d;
head->next=NULL;
t=head;
}
else//建立其余结点
{
s=(struct linknode *)malloc(sizeof(struct linknode));
s->data=d;
s->next=NULL;
t->next=s;
t=s;
}
i++;
}
return head;
}
void disp(struct linknode *head)//输出结点数据
{
struct linknode *p=head;
printf("输出一个单链表:\n");
if(p==NULL)
printf("空");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
int len(struct linknode *head)//返回单链表的长度
{
int pcount=0;//结点计数器
struct linknode *p=head;
while(p!=NULL)
{
p->next;
pcount++;
}
return pcount;
}
struct linknode *JCHB(struct linknode *heada,struct linknode *headb)//交叉合并函数
{
printf("哈哈,开始调用我了");//刚开始检查是否调用
struct linknode *ha,*hb,*t,*s,*hc;
hc=heada;
ha=heada;
t=heada;
hb=headb;
s=headb;
/*if(len(ha)!=len(hb))
{
printf("不合题意,链表长度不同\n");
return NULL;
}*/
while(ha!=NULL)
{
t=ha;
ha=ha->next;
t->next=hb;
s=hb;
hb=hb->next;
s->next=ha;
}
return (hc);
}
void main()
{
struct linknode *heada,*headb,*headc;
heada=create();
disp(heada);//输出链表数据
headb=create();
disp(headb);
headc=JCHB(heada,headb);
disp(headc);
}问题描述:有两个单链表A,和B A={a1,a2,.....an},B={b1,b2,...bn},写一个函数合并A和B,并形成一个链表C,C={a1,b1,a2,b2...an,bn}
前提是:A和B的长度相同
疑问如下:
当我不把交叉合并函数的if判断语句注释掉的时候就没输出,当我注释掉的时候程序能满足要求!不知为何加上if判断语句就不行
请前辈们指点一二,不胜感激




