Хотите ли вы отсортировать их после создания связанного списка?
Наилучшим подходом для такой сортировки данных может быть использование дерева и его сортировка при загрузке данных.Древовидная структура данных также быстра для поиска, хотя хеш, вероятно, будет самым быстрым.Обратите внимание, что strcmp - не самый быстрый способ сортировки или поиска.Вы можете вести индекс в поисковом запросе и кодировать его так, чтобы индекс указывал на первый не имеющий соответствия символ.Тогда вам нужно сравнивать только одного персонажа.Однако у меня нет времени, чтобы привести пример кода для этого.
typedef struct directory_entry_t
{
char *name;
char *number;
directory_entry_t *before;
directory_entry_t *after;
} directory_entry;
...
bool found;
while(!found)
{
int result = strcmp("name", node->name);
if(0 == result)
{
fprintf(stderr, "Duplicate entry for %s.\n", name);
}
else if(0 < result)
{
if(NULL == node->after)
{
/* Create a new node, populate it, and store a pointer to it at node->after. */
found = true;
}
else
{
node = node->after;
}
else
{
/* Like the above case, but for before. */
}
}