2010-04-01 3 views
0

У меня есть программа, которая размещает структуры в связанном списке на основе «имени», которое они хранят в них.Сортировка строк по первой букве [C]

Чтобы найти свое место в списке, мне нужно выяснить, является ли вставка имён раньше или позже в алфавите, а затем в структурах рядом с ним.

Имена внутри структур, к которым у меня есть доступ. Мне не нужен полный comaparison, если это больше работы, даже первая буква в порядке.

Спасибо за помощь!

ответ

1

Это не для меня ясно, что ваш вопрос, но что-то, как это будет работать:

if (node1->name[0] <= node2->name[0]) { 
    ... 
} else { 
    ... 
} 

Это будет сравнивать первую букву имени в каждом из узлов.

1

Если у вас есть два C строки, a и b, вы можете просто сравнить свои первые элементы:

*a == *b 

== Где может быть любой из шести операторов отношений.

Помните, что с помощью строк C char* указывает на первый символ в строке.

+0

не забудьте проверить NULL – Andrey

1

strcmp() сравнивает две строки C и расскажет вам, в каком порядке они находятся, или если они одинаковы. Если вас не волнует случай, вы можете использовать strcasecmp(). Эти функции не будут сравнивать больше строк, чем необходимо, чтобы определить, какой порядок возврата.

+0

Обратите внимание, что strcasecmp не является стандартным C. – Arkku

1

Вы можете просто перебирать список и вставлять новый элемент в нужное место на основе сравнений, которые вы выполняете, передавая каждый элемент. Простейшая версия, чувствительная к регистру, может быть выполнена путем сравнения числовых значений букв (например, a[0] < b[0]), или вы можете преобразовать их в общий регистр, если вы хотите быть нечувствительным к регистру (см. ctype.h). Или вы можете сравнить все слова с strcmp.