Поиск в связанном списке с возможно большим количеством результатов - PullRequest
0 голосов
/ 22 ноября 2018

Мой семестровый проект - написать программу для телефонной книги.Я закончил 3/4, но мне нужно создать функцию изменения, чтобы иметь возможность изменять записи в моем связанном списке.Мой вопрос заключается в том, что в телефонной книге возможно, что более одного человека имеют одно и то же имя, но другой номер телефона.

В моей функции программа запрашивает имя, которое нужно изменить, но если кто-тоискать имя, которое существует более одного раза, тогда как я могу сделать выбор между ними, кто из них является разыскиваемым человеком?

Моя структура связанного списка:

typedef struct szemely {
     char *veznev;
     char *kernev;
     char *telnum;
     char *varos;        
     struct szemely *next;
 } Person;

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Функция modify не будет обрабатывать поиск вообще.Вам понадобится (вы захотите) отдельная функция для поиска по имени, позвоните ей person_lookup или как-то еще.

Есть несколько вещей, которые вы хотите сделать.

  1. поиск человека поимя
  2. показать результаты поиска пользователю
  3. принять выбор пользователя (т.е. пользователь выберет человека из нумерованного списка)
  4. изменить информацию этого человека, которую выбрал пользователь.

псевдо-код:

struct Person *person;
struct Person *persons;

/* return a list of names or NULL if none are found */
persons = lookup_person(name)

if (persons is NULL)
     handle_no_results_found && return;

/* user_selection_from() will display the matched lookup names 
 * as a numbered list. The user will select a number from the 
 * list that corresponds to a name.
 */
person = user_selection_from(persons);

/* the user didn't select a name from the list */
if (person is NULL)
      handle_no_user_selection && return;

/* modify the person the user selected */
error = modify(person);

if (error) 
     alert_user_unable_to_modify_person;

Как я уже сказал, это псевдо-код, не совсем корректный - но он должен дать вам идею или (надеюсь) поставить вас направильный путь.

0 голосов
/ 22 ноября 2018

Отображение списка возможных вариантов и оператор выбирает, какой из них, либо по номеру, в терминале, либо с помощью других методов выбора интерфейса (кнопка, ссылка, флажок и т. П.).

Чтоинтерфейс будет нацелен на программу?

...