在链接列表中搜索可能会有更多结果

时间:2018-11-22 18:35:51

标签: c struct linked-list singly-linked-list

我的学期项目是编写电话簿程序。我已经完成3/4,但是我需要创建一个Modify函数,以便能够修改链表中的记录。我的问题是,在电话簿中,可能有多个人具有相同的名字,但其他电话号码相同。

在我的函数中,程序要求输入想要修改的名称,但是如果有人搜索一个以上存在的名称,那么我如何才能在它们之间进行选择,其中哪个是想要的人?

我的链表结构:

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

2 个答案:

答案 0 :(得分:0)

显示可能选择的列表,并让操作员在终端中通过数字或其他界面选择方法(按钮,链接,复选框等)选择哪个。

程序将定位到什么界面?

答案 1 :(得分:0)

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;

正如我所说,这是伪代码,并不完全正确-但这应该可以给您一个想法,或者(希望)使您走上正确的道路。