这里交换的是list的data值,相比交换链表顺序简单,但比较耗时。
#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
struct List
{
int a;
List *next;
};
void initlist(List* a)
{
a=new List();
a->a=0;
a->next=NULL;
}
void input(List *a,int n)
{
List *temp=a;
cout<<"请输入n个数据"<<endl;
while(n--)
{
if(n>0)
temp->next=new List();
cin>>temp->a;
temp=temp->next;
if(n>0)
temp->next=NULL;
}
}
void sort(List *a)
{
List *last=NULL;
while(last!=a)
{
List *temp=a;
for(temp=a;temp->next!=last;temp=temp->next)
{
if(temp->a>temp->next->a)
{
int t=temp->a;
temp->a=temp->next->a;
temp->next->a=t;
}
}
last=temp;
}
}
int main()
{
int n,m;
cout<<"请输入第一个链表数据个数"<<endl;
cin>>n;
List a;
initlist(&a);
input(&a,n);
cout<<"请输入第二个链表数据个数"<<endl;
cin>>m;
List b;
initlist(&b);
input(&b,m);
sort(&a);
sort(&b);
return 0;
}