如何从链接列表中删除中间节点 [英] How to remove intermediate node from a linked list

查看:170
本文介绍了如何从链接列表中删除中间节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个单向链表。如果我想从这个链表中删除一个已知的元素,我该怎么办?

I have a singly linked list. If I want to delete an known element from this linked list, what can I do?

例如: 节点*头; (44) 节点*尾巴; (39)

For example: Node* head; (44) Node* tail; (39)

链表:44 27 59 13 45 39 我们想从中删除45。并获得:44 27 59 13 39

linked list: 44 27 59 13 45 39 we want to delete 45 from it. and get: 44 27 59 13 39

我只是想通了,从列表中删除第一个元素(如元素(需要被删除)是列表的第一个元素)。 我:头=流浆>旁边;

I only figured out that delete first element from list(if element(need to be removed) is first element of the list). I got: head = head-> next;

如何从列表中删除中间节点?

How to remove intermediate node from list?

推荐答案

这个伪code可以帮助你: -

This pseudo code might help you :-

void remove(int key) {
  Node* p  = head->next;
  Node*prev = head;
  while(p!=NULL) {

     if(p->data==key) {
        prev->next = p->next;
        free(p);
        break;           
     }
     prev = p;
     p = p->next;
  }
}

这篇关于如何从链接列表中删除中间节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆