#include<iostream>
#include<malloc.h>
using namespace std;
struct node
{
int data;
struct node *next;
};
struct node *creat(int m)
{
struct node *head,*tail,*p;
int i;
head=(struct node *)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
for(i=1;i<=m;i++)
{
p=(struct node *)malloc(sizeof (struct node ));
cin>>p->data;
p->next=NULL;
tail->next=p;
tail = p;
}
//之前漏了个等于号,又结果误认为是排序不对,后面才发现排序没错,个数少了2个,回头找了一遍才发现问题
/*
6 5
1 23 26 45 66 99
14 21 28 50 100
缺少等于号的 结果 1 23 26 45 66 99 14 21 28*/
return head;
};
struct node *guibing(struct node *head1,struct node *head2)
{
struct node *p1,*p2,*tail;
p1=head1->next;
p2=head2->next;
head1->next=NULL;
tail=head1;
free(head2);
while(p1&&p2)
{
if(p1->data < p2->data)
{
tail->next= p1;
tail=p1;
p1=p1->next;
tail->next=NULL;
}
else
{
tail->next= p2;
tail=p2;
p2=p2->next;
tail->next=NULL;
}
}
if(p1)
tail->next=p1;
else tail->next=p2;
return head1;
}
void display(struct node *head)
{
struct node *q;
q=head->next;
while(q!=NULL)
{
cout << q->data;
if(q->next!=NULL)
cout<<" ";
q=q->next;
}
cout<<endl;
}
int main()
{
int n,h,m;
struct node *head1,*head2;
cin>>m>>n;
head1=creat(m);
head2=creat(n);
guibing(head1,head2);
display(head1);
return 0;
}
2119数据结构实验之链表四:有序链表的归并
最新推荐文章于 2018-08-06 09:40:00 发布