代码随想录算法训练营第三天|移除链表元素、设计链表

  •  链表理论基础 
  •  203.移除链表元素 
  •  707.设计链表 
  •  206.反转链表 

 详细布置 

 链表理论基础 

建议:了解一下链接基础,以及链表和数组的区别 

文章链接:代码随想录

 203.移除链表元素  

建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。

题目链接/文章讲解/视频讲解::代码随想录

主要分为两种方法:

1.常规方法,即分两类情况讨论,判断要删除的节点是否为头结点,如果为头结点则直接将我们设定的Head -> Head next;如果不为头结点,则跳过该节点将指针指向下一个结点即可。代码中具体行表现

cur->next = cur->next->next;

2.虚拟头结点方法,在原本的头结点前面增加一个虚拟头结点dummyhead,可以很好地避免常规方法中需要分类讨论的问题

此外,使用C++语言一定要记得删掉的元素需要释放内存。

ListNode* tmp = cur->next;
delete tmp;
同时需要注意最后return返回的应该是dummyhead的next而非head头结点(head头结点可能被删)

 707.设计链表  

建议: 这是一道考察 链表综合操作的题目,不算容易,可以练一练 使用虚拟头结点

题目链接/文章讲解/视频讲解:代码随想录

本体介绍了基础题目中关于链表的全部基本操作,包括获取第N个节点的值,在头部或尾部插入节点,在第N个节点前插入节点或删除第N个节点。

要注意的几个地方在于:

1.获取第0个节点即为获取头节点。

2.在头部插入节点时要注意多出来的new node要先连接上原来的dummyhead的next节点,然后再用dummyhead节点指向new node。顺序反了之后会使dummyhead next节点已经改为了new node, 原本的dummyhead next节点定位丢失无法找到。

3.在删除第n个节点时同样要注意,要定位到n-1节点为cur才能删除cur next

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值