两个单链式风别从小到大排列为啥不对求大神帮满看看
#include<stdio.h>#include<stdlib.h>
typedef struct lnode
{
int data;
struct lnode *next;
}lnode, *linklist,*linklist1;
//定义单链试结构
int main()
{
linklist head,p,r;
int i,n,t;
linklist1 head1,p1,r1;
head=(linklist)malloc(sizeof(lnode));
head->next=NULL;
r=head;
//建立头结点
printf("请输入p结点个数:\n");
scanf("%d",&n);
printf("请输入P的元素值:\n");
for(i=1;i<=n;i++)
{
p=(linklist)malloc(sizeof(lnode));
p->next=NULL;
scanf("%d",&p->data);
//建立一个结点
r->next=p;
r=r->next;
//建立一下节点
}
//次循环的整体为建立一个n节点的单链式结构
r=head->next;
p=r->next;
while(r&&p)
{
if(p->data<=r->data)
{
r->next=p->next;
p->next=r;
r=r->next;
p=p->next;
}
}
p=head->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}//输出p的元素值
printf("\n");
head1=(linklist1)malloc(sizeof(lnode));
head1->next=NULL;
r1=head1;
printf("请输入p1结点个数:\n");
scanf("%d",&t);
printf("请输入P1的元素值:\n");
for(i=1;i<=t;i++)
{
p1=(linklist1)malloc(sizeof(lnode));
p1->next=NULL;
scanf("%d",&p1->data);
//建立一个结点
r1->next=p1;
r1=r1->next;
//建立一下节点
}
//次循环的整体为建立一个t节点的单链式结构
r1=head1->next;
p1=r1->next;
while(r1&&p1)
{
if(p1->data<=r1->data)
{
r1->next=p1->next;
p1->next=r1;
r1=r1->next;
p1=p1->next;
}
}//元素从小到大的排列
p1=head1->next;
while(p1)
{
printf("%5d",p1->data);
p1=p1->next;
}//输出p1的元素值
return 0;
}