Сортировать строки по первой букве [C] - PullRequest
0 голосов
/ 02 апреля 2010

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

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

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

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

Ответы [ 4 ]

1 голос
/ 02 апреля 2010

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

1 голос
/ 02 апреля 2010

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

1 голос
/ 02 апреля 2010

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

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

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

1 голос
/ 02 апреля 2010

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

*a == *b

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

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

...