zoukankan      html  css  js  c++  java
  • 删除链表中全部值为k的节点

    1. 问题描写叙述

      给定一个单链表,删除当中值为k的全部节点。比如:1263456,删除当中值为6的节点,返回:12345


    2. 方法与思路

      这是一个简单的链表操作题。删除是要考虑的节点所在的位置(头部,中间和尾部),分开处理一下好了。主要步骤例如以下描写叙述:
     

     I. while head>valtarget
          head = head->next
     II. head
           if head=NULL return NULL;
     III. 遍历剩余链表,删除中间和尾部值为k的节点。

      c++代码例如以下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    
    ListNode* removeElements(ListNode* head, int val) {
            if(head == NULL) return NULL;
            while(head && head->val == val) 
            {
                ListNode *pre = head;
                head = head->next;
                delete pre;
            }
            if(head == NULL) return head;
            ListNode *p = head;
    
            while(p && p->next)
            {
                ListNode *q = p->next;
                if(q->val == val) 
                {
    
                    p->next = q->next;
                    delete q;
                }
                else
                    p = p->next;
    
            }
    
    
            return head;
        }
  • 相关阅读:
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5362647.html
Copyright © 2011-2022 走看看