#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct __LinkedList_ts { char name[20]; int score; struct __LinkedList_ts* next; } LinkedList_ts; LinkedList_ts* LinkedList_new(char* name, int score) { LinkedList_ts* result = NULL; result = (LinkedList_ts*)malloc(sizeof(LinkedList_ts)); memcpy(result->name, name, strlen(name)*sizeof(char)); result->score = score; result->next = NULL; return result; } LinkedList_ts* LinkedList_add(LinkedList_ts* head, char* name, int score, int sort) { LinkedList_ts* result = NULL; LinkedList_ts* curr = NULL; LinkedList_ts* next = NULL; LinkedList_ts* node = NULL; node = LinkedList_new(name, score); if (head == NULL) { head = node; } else { for (curr=head; curr!=NULL; curr=curr->next) { next = curr->next; if (sort == 1) { if (score < curr->score) { node->next = head; head = node; break; } else { if (next == NULL) { curr->next = node; break; } else { if (score < next->score) { curr->next = node; node->next = next; break; } else {} } } } else { if (score > curr->score) { node->next = head; head = node; break; } else { if (next == NULL) { curr->next = node; break; } else { if (score > next->score) { curr->next = node; node->next = next; break; } else {} } } } } } result = head; return result; } int main() { int n,sort,i; char name[20] = {}; int score; LinkedList_ts* head = NULL; LinkedList_ts* curr = NULL; scanf("%d\n%d", &n, &sort); for (i=0; i<n; ++i) { memset(name, 0, sizeof(char)*20); scanf("%s %d", name, &score); head = LinkedList_add(head, name, score, sort); } for (curr=head; curr!=NULL; curr=curr->next) { printf("%s %d\n", curr->name, curr->score); } return 0; }