Я пытаюсь вставить узлы в связанный список, чтобы строки, содержащиеся в данных каждого узла, сортировались в алфавитном порядке. Если вводится дублирующее слово, вместо этого увеличивается число «count» узла. Мне дана функция makeLnode(), которая создает узел, функцию isGreater(), которая сравнивает две строки, и функцию getLnodeValue(), которая возвращает строку с каждым узлом.Связанный список Алфавитная вставка
lnode insertWord(char * word, lnode head) {
/* Your code to insert a word in the linked list goes here */
lnode temp = makeLnode(word);
if(head == NULL) // if head is null, make head=temp
{
head = temp;
}
else if(isGreater(getLnodeValue(temp),getLnodeValue(head)) == -1) // if temp < head, place temp before head
{
temp->next = head;
head = temp;
}
else
{
lnode curr;
for(curr = head; curr; curr = curr->next) // loop through linked list
{
if(isGreater(getLnodeValue(temp),getLnodeValue(curr)) == 0) // if curr = temp, increment curr
{
curr->count++;
break;
}
else if(isGreater(getLnodeValue(temp),getLnodeValue(curr)) == -1) // if temp < curr, place temp before curr
{
temp->next = curr->next;
curr->next = temp;
break;
}
else if(curr->next == NULL) // if we reach the end of the list and temp > all other nodes, place temp at end of list
{
curr->next = temp;
break;
}
}
}
return head;
}
Только несколько слов имеют приращение и кратны некоторые слова. Мой выход следующим образом:
1. - 2 - a
2. - 2 - is
3. - 1 - broadcasting
4. - 1 - emergency
5. - 1 - be
6. - 1 - for
7. - 2 - this
8. - 1 - system
9. - 1 - system
10. - 1 - the
11. - 1 - testing
12. - 1 - seconds
13. - 1 - sixty
14. - 1 - next
15. - 1 - the
16. - 1 - test
17. - 1 - only
18. - 1 - test
19. - 1 - well
Как насчет источника проводки для 'isGreater()'? – donjuedo
Я вижу, что, как обычно, с любимыми списками вопросов, отладка aparrent не была выполнена. Я думаю, мы должны быть благодарны, что есть код и вывод :( –