两个有序链表归并的程序,实在找不出什么是问题,请大家帮帮忙!
大家看一下算法是否有问题啊,就是merge()函数的定义
#include<iostream>
using namespace std;
struct linklist
{
int data;
linklist * next;
};
linklist * head;
linklist * create()//创建链表
{
linklist * s;
linklist * t;
int n;
cin>>n;
while(n--)
{
t=(linklist*)malloc(sizeof(linklist));
cin>>t->data;
if(head==NULL)
head=t;
else
s->next=t;
s=t;
}
if(head!=NULL)
t->next=NULL;
return (head);
}
linklist * merge(linklist *L1, linklist *L2)
{
linklist *L3;
linklist * p;
linklist * q;
linklist *t;
linklist *s;
L3=new linklist;
t=L3;
while(p!=NULL && q!=NULL)
{
if(p->data<q->data)
{
s=new linklist;
s->data=p->data;
p=p->next;
t->next=s;
t=s;
}
else if(p->data>q->data)
{
s=new linklist;
s->data=q->data;
q=q->next;
t->next=s;
t=s;
}
else
{
s=new linklist;
s->data=p->data;
p=p->next;
q=q->next;
t->next=s;
t=s;
}
}
if(q!=NULL)
p=q;
while(p!=NULL)
{
s=new linklist;
s->data=p->data;
p=p->next;
t->next=s;
t=s;
}
t->next=NULL;
return L3;
}
void output(linklist*head)//输出链表
{
while(head!=NULL)
{
cout<<head->data<<" ";
head=head->next;
}
cout<<endl;
}
int main()//主函数
{
linklist *m;
linklist *n;
linklist *c;
m=create();
output(head);
head=NULL;
n=create();
output(head);
c=merge(m,n);
output(c);
return 0;
}
[解决办法]
QQ 935727586