#include<iostream>
using namespace std;
struct Student{
int id;
int score;
Student* next;
};
Student* createstudent(int n);
void swaqstudent(Student* s1,Student* s2);
void printstudent(Student* s1);
void sortstudent(Student* s);
void appendstudent(Student* s1,Student* s2);
int main ()
{
int N,M;
cin>>N>>M;
Student* s1=createstudent(N);
Student* s2=createstudent(M);
appendstudent(s1,s2);
sortstudent(s1);
printstudent(s1);
return 0;
}
Student* createstudent(int n)
{
Student* head;
head=(Student*)malloc(sizeof(Student));
head->next=NULL;
Student* tail=head;
Student* current;
for (int i=0;i<n;i++)
{
current=(Student* )malloc(sizeof(Student));
cin>>current->id>>current->score;
current->next=tail->next;
tail->next=current;
tail=current;
}
return head;
}
void printstudent(Student* head)
{
Student* p=head->next;
Student* q;
while(p!=NULL)
{
cout<<p->id<<" "<<p->score<<endl;
q=p;
p=p->next;
free(q);
}
}
void swapstudent(Student* s1,Student* s2)
{
int tempid=s1->id;
int tempscore=s1->score;
s1->id=s2->id;
s1->score=s2->score;
s2->id=tempid;
s2->score=tempscore;
}
void appendstudent(Student* s1,Student* s2)
{
Student*p=s1;
s2=s2->next;
while(p->next!=NULL)
{
p=p->next;
}
p->next=s2;
}
void sortstudent(Student* s)
{
Student* start=s->next;
while(start!=NULL)
{
Student* p=start;
int minid=p->id;
Student* min=p;
while (p!=NULL)
{
if (p->id<minid)
{
minid=p->id;
min=p;
}
p=p->next;
}
swapstudent(min,start);
start=start->next;
}
}
数据结构归并两个链表并按照学号升序
最新推荐文章于 2024-10-10 22:59:02 发布