从链接列表的中间删除节点

时间:2013-12-13 03:20:02

标签: c++ linked-list

我在链接的字符列表中使用以下代码。但是每当我运行这个程序时,我都会遇到运行时错误。

void ldellist(Node *head,char k) 
{
    Node *remove=head;
    Node *previous=head;
    while(remove->data!=k) 
    {
        remove=remove->next; 
    }
    while(previous->next!=remove) 
    {
        previous=previous->next; 
    }
    previous->next=remove->next;
    free(remove);
} 

有人能告诉我这是什么问题吗?

2 个答案:

答案 0 :(得分:0)

也许你需要做一些检查?

void ldellist(Node *head,char k)  {
  Node *remove=head;
  Node *previous=head;
  while(remove && remove->data!=k) {
    remove=remove->next; }
  while(previous && previous->next!=remove) {
    previous=previous->next; }
  if (remove) {
    previous->next=remove->next;
    free(remove);
  } else { 
    // print some error like 'not found'
  }
} 

答案 1 :(得分:0)

如果要删除的节点是head,你将获得“remove”等于“head”,条件“previous-> next!= remove”将始终为true。