#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct __LinkedList_t { char* value; struct __LinkedList_t* next; } LinkedList_t; LinkedList_t* newNode(char* value) { LinkedList_t* result = (LinkedList_t*)malloc(sizeof(LinkedList_t)); result->value = (char*)malloc(sizeof(char)*(strlen(value)+1)); memcpy(result->value, value, sizeof(char)*(strlen(value)+1)); result->next = NULL; return result; } LinkedList_t* addNode(LinkedList_t* head, char* value) { LinkedList_t* temp = NULL; LinkedList_t* node = NULL; LinkedList_t* next = NULL; if (head == NULL) { head = newNode(value); } else { for (temp = head; temp != NULL; temp = temp->next) { if (strcmp(value, temp->value) < 0) { node = newNode(value); node->next = head; head = node; break; } else { next = temp->next; if (next == NULL) { node = newNode(value); temp->next = node; break; } else { if (strcmp(value, next->value) < 0) { node = newNode(value); node->next = next; temp->next = node; break; } else {} } } } } return head; } int main() { int N = 0; char s[101] = {}; unsigned int i; LinkedList_t* head = NULL; LinkedList_t* temp = NULL; scanf("%d", &N); for (int i=0; i<N; ++i) { scanf("%s", s); head = addNode(head, s); } for (temp=head; temp!=NULL; temp=temp->next) { printf("%s\n", temp->value); } return 0; }