如何编辑节点?以及如何删除修改后的节点?

时间:2011-03-02 12:15:50

标签: c

如何编辑节点?

我使用recipe_id作为主键。在我的编辑部分,我需要首先搜索recipe_id,如果它存在,程序将让用户编辑她输入的recipe_id。我不知道怎么做。

如何删除节点?

就像我上面的问题一样,我使用recipe_id来修改将要编辑和删除的节点...请帮助我..

另一件事是我不知道如何显示链接列表中的所有数据而没有任何运行时错误.. - _ -

谢谢! :)) - maan:D

1 个答案:

答案 0 :(得分:0)

听起来您正在使用链接列表作为各种配方数据库。编辑节点应该很简单。只需运行列表,直到找到匹配的recipe_id,然后使用新的用户输入编辑字段。

NODE *tmp = list;
while(tmp && tmp->recipe_id != recipe_id_to_edit)
  tmp = tmp->next;
if(tmp) {
  /*  edit node here  */
}

删除节点可以这样做。

NODE *tmp = list;
if(tmp) {
  if(tmp->recipe_id == recipe_id_to_delete) {
    list = list->next;
    free(tmp);
  }
  else {
    while(tmp->next && tmp->next->recipe_id != recipe_id_to_delete)
      tmp = tmp->next;
        if(tmp->next) {
      NODE *to_free = tmp->next;
      tmp->next = tmp->next->next;
      free(to_free);
    }
  }      
}

在运行时显示列表中的数据应该像

一样简单
NODE *tmp = list;
while(tmp) {
  printf("%s %s\n", tmp->field1, tmp->field2 );
  tmp = tmp->next
}

这假设您的列表是单链接的并且正确地以NULL结尾。