#include<stdio.h>//本题使用链表的冒泡排序(自己懵的),可能有冗杂的地方,欢迎大家观摩哦
#include<stdlib.h>
typedef struct num
{
char s[100];
int num;
struct num *next;
}link;
link* create(int n)
{
link* head,*node,*now;
head =(link*) malloc(sizeof(link));
now =head;
for(int i=1;i<=n;i++)
{
node =(link*)malloc(sizeof(link));
scanf("%s",&node->s);
scanf("%d",&node->num);
now->next =node;
now=node;
}
return head;
}
void paixu(int n,link* head)//排序
{
link* r,*node,*l;
for(int i=0;i<n;i++)
{
node =head;
l=node->next;
r=node->next->next;
for(int j =0;j<n-i-1;j++)
{
if(l->num>r->num)//换时l左边相当于没动,右边r挪了两位,或者说在l上又移了一位
{
node->next=r;
l->next=r->next;
r->next=l;
r=l->next;
node=node->next;
}
else//不换时正常链表遍历
{
node =node->next;
l=l->next;
r=r->next;
}
}
}
}
void show(int n,link*head)
{
link*node =head->next;
while(node!=NULL)
{
printf("%s\n",node->s);
node =node->next;
}
}
int main()
{
int n;
scanf("%d",&n);
link*a =create(n);
paixu(n,a);
show(n,a);
return 0;
}