struct Record_node* Sequential_search(struct Record_node *List, int target) {
struct Record_node *cur;
cur = List->head ;
if(cur == NULL || cur->key >= target) {
return NULL;
}
while(cur->next != NULL) {
if(cur->next->key >= target) {
return cur;
}
cur = cur->next;
}
return cur;
}
Я не могу интерпретировать этот псевдокод. Кто-нибудь может объяснить мне, как эта программа работает и течет? Учитывая этот псевдокод, который ищет значение в связанном списке и списке в порядке возрастания, что бы эта программа возвратила?
а. Наибольшее значение в списке, которое меньше целевого значения
б. Наибольшее значение в списке, которое меньше или равно целевому значению
с. Наименьшее значение в списке, которое больше или равно целевому значению
д. Target
е. Наименьшее значение в списке больше целевого значения
И скажите, что Список - это [1, 2, 4, 5, 9, 20, 20, 24, 44, 69, 70, 71, 74, 77, 92] и цель 15, сколько проведено сравнений? (здесь сравнение означает сравнение значения цели)
EDIT:
@ Стефан, прости, если я грубо задал свой вопрос.
Ну, так как я привык к программированию в Visual Basic, я понимаю «cur-> key» в строке 4 программы как «cur больше или равно ключу», но так как «+ =» означает «прежнее» значение плюс последнее значение равно последнему значению ', я могу интерпретировать' -> 'так же, как' + = '. Эта часть - одна из проблем, с которыми я сталкиваюсь.
Вторая проблема, с которой я сталкиваюсь, - это использование указателей в Record_node (если это указатель). Я даже не уверен, знаю ли я то, чего не знаю! Я понимаю эту программу как некий рекурсивный алгоритм.