程序代码:
#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");
}
struct linknode *connect(struct linknode *head1,struct linknode *head2)
{
struct linknode *head,*p1,*p2,*r,*t;
p1=head1;
p2=head2;
head=p1;
//p2=head;
while(p1!=NULL&&p2!=NULL)
{
if(p1->data<p2->data)
{
t=p1->next;
p1->next=p2;
p1=t;
}
if(p1->data>p2->data)
{
r=p2->next;
p2->next=p1;
p2=r;
}
}
/* while(p2!=NULL)
p1=p2;
while(p1!=NULL)
p2=p1;
head=head->next;
free(head);*/
return head;
}
void main()
{
struct linknode *head1,*head2,*head3;
head1=create();
disp(head1);
head2=create();
disp(head2);
head3=connect(head1,head2);
disp(head3);
}
不好意思!我怕大家看着麻烦!所以就贴完!致歉!这个程序是有问题的肯定!但是我就是冲着1 3 5和2 4 6来的!我想着这个连接应该没问题!可是
,麻烦给看一下哈