当前位置:   article > 正文

【剑指Offer】删除链表的节点

【剑指Offer】删除链表的节点

题目

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

注意:此题对比原题有改动

思路

最简单的链表删除,要用一个指针记录上一次的节点,然后注意删除的是头结点的情况,为了减少时间,删除以后立即跳出循环。

代码

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode* deleteNode(ListNode* head, int val) {
  12. if(head == NULL){
  13. return NULL;
  14. }
  15. if(head->val == val){
  16. if(head->next == NULL){
  17. return NULL;
  18. }else{
  19. return head->next;
  20. }
  21. }
  22. ListNode* p = head->next;
  23. ListNode* pLast = head;
  24. while(p != NULL){
  25. if(p->val == val){
  26. pLast->next = p->next;
  27. break;
  28. }
  29. pLast = p;
  30. p = p->next;
  31. }
  32. return head;
  33. }
  34. };

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/444264
推荐阅读
相关标签
  

闽ICP备14008679号