学习数据结构的第五天

Posted startfrom0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习数据结构的第五天相关的知识,希望对你有一定的参考价值。

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;

技术图片

 

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

以上是关于学习数据结构的第五天的主要内容,如果未能解决你的问题,请参考以下文章

学习python的第五天

Python 3 学习的第五天——Python基础

学习PHP的第五天

学习python的第五天

学习Java的第五天

nodejs的第五天学习