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;
        }
  • 相关阅读:
    java web分享ppt大纲 -- servlet容器简介
    Docker入门二
    Docker入门
    自动化运维
    堡垒机
    代码管理平台
    NoSQL(四)
    NoSQL(三)
    NoSQL(二)
    CentOS添加新网卡network-scripts目录下找不到网卡配置文件
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5362647.html
Copyright © 2011-2022 走看看