ch2_2移除链表中的节点

本文讲解了链表节点的结构,包括自定义数值和指针,并重点阐述了如何创建节点、表示节点内容以及实现节点移除的算法。通过实例演示了如何使用`ListNode`结构和`removeNode`函数来管理链表并删除指定值的节点。
摘要由CSDN通过智能技术生成

lc203

1.单链表节点

链表中的节点类型, 是一种结构体指针,

即 链表节点 本身就是 一个指针类型,
只不过是一种特殊类型的 结构体指针;

该结构体指针中{

  1. 自定义的数值;
  2. 指向下一个节点的结构体指针;
  3. 自定义的 节点构造函数, 方便于初始化化时,可以直接赋值;

}

struct ListNode{
int val;  // 节点中的数值
struct* next; //  节点中指向下一个节点的指针, 该指针类型是结构体, 所以内存中 取字节时, 按照结构体的类型取字节;
// 节点的构造函数
ListNode(int x): val(x), next(nullstr){}

};

1.1 节点的表示

注意: 先理清各个节点 表示,所代表的含义;

1.2 移除节点


//  节点的创建,  代表的是一个链表中的节点;
ListNode* curNode ;  


// 代表当前节点中数值;
curNode->val ;

// 节点中的指针, 存放的是下一个节点的地址;
curNode->next;

//  使用当前节点,表示出下一个节点中的数值 ;
curNode->next->val


class Solution{
public:
    ListNode* removeNode( ListNode* head, int val){
        // 创建一个虚拟头节点,  用于将虚拟头节点与 传过来的节点进行链接;

        // 因为结构体 指针, 内部自定义了 节点的构造函数, 所以这里初始化节点时, 可以直接赋值;
       ListNode* dummyHead = new  ListNode(0);

       // 将虚拟头节点中的指针 指向 传过来的头节点;
       dummyHead->next = head;

       // 使用一个结构体指针, 用来存储当前节点;
       ListNode* curNode = dummyHead;

       // curNode->next: 代表当前节点的下一个节点,  curNode->next->val  当前节点下一个节点中的数值;
       while(curNode->next != nullptr){  // 当下一个节点不为空时, 遍历链表

          if(curNode->next->val == val ){        // 当数值相同时, 表明当前节点的下一个节点是 待删除的节点;
              ListNode* tmp = curNode->next;  // 将 待删除的节点保存下来;
              curNode->next = curNode->next->next;  // 将当前节点中的指针 赋值为 当前节点的下一个后,再下一个节点;
              delete tmp;  // 删除该节点, 释放出内存空间地址;
           } else{
              curNode = curNode->next;
            }

       }
        head = dummyHead->next;
        delete dummyHead;
        return  head;

    }
    
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值