码迷,mamicode.com
首页 > 其他好文 > 详细

学习数据结构的第五天(三)

时间:2020-03-31 22:55:26      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:info   需要   除了   class   element   哈哈   引入   内存   代码   

class Solution {
public ListNode removeElements(ListNode head, int val) {
//如果没有前置头,那么需要分是头还是链身
//给它加一个前置头哈哈
ListNode dummyHead=new ListNode(-1);
//删除的话,那么需要找到下一个,也就是说找到这个节点的上一个节点。
dummyHead.next=head;
ListNode node=dummyHead;
while(node!=null)
{
if(node.next!=null)
{
if(node.next.val==val)
{
node.next=node.next.next;
// node.next.next=null; 这句话也应该学到很多的。
continue;
}
}
node=node.next;
}
return dummyHead.next;
}
}

 

T203 删除链表中的元素:

key1:无论怎么说,添加一个dummyhead头结点是不错的选择

key2:对于删除来说,一定是到达需要删除节点的上一个节点。那么比较的就是  当前节点的下一个节点,用下一个节点进行比较

如果说是删除了相应的节点,那么指针应该留在原地不动,因为下一个节点变成新的了,再去比较。

如果没删除节点,那么应该移动。

这些没什么可说的了。

key3:if(node.next.val==val)
{
node.next=node.next.next;
// node.next.next=null; 这句话也应该学到很多的。

 

对于下面这句话,到底错在哪了。

对于链表的删除:1.先保存长串的节点   2.用第三方删除法,不能在原地删除。     原因:因为原地删除的话,那么再删除的就影响到本身了。你细品这句话就懂了。

删除:必须先存长串的节点,然后必须引入第三方来删除。

 

改代码:

Node n1=node.next;
node.next=n1.next;
n1.next=null;

技术图片

 

 确实好像减小了内存的消耗

学习数据结构的第五天(三)

标签:info   需要   除了   class   element   哈哈   引入   内存   代码   

原文地址:https://www.cnblogs.com/startFrom0/p/12609016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!