Remove all elements from a linked list of integers that have value val.
Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5
s思路: 1. 操作链表,要删除数。首先想想链表的边界是什么?左边是头节点,是边界,右边是为节点也是边界。如果要删除的节点恰好是头节点,就要考虑头指针改变的问题。因此用dummy或pointer-to-pointer。 2. 用dummy:首先需要新建一个node,赋初值为0,然后需要一个dummy指针指向这个node。 3. 用pointer-to-pointer: 之前总结过指向指针的指针的两种操作:第一种是只移动指向指针的指针到新的位置,这个操作相当于站位,放到需要的地方,不对链表产生改变;第二种操作是修改被指针指向的指针里的地址,让指针指向新的节点,这个操作会修改链表结构! 以上,Operation 1表示移动pointer-to-pointer指向不同节点的指针域,operation 2表示修改节点的指针域,让指向新的node。这里最大的不同是,指针是低层次的,指向指针的指针是高层次的,更灵活,两者不是一个级别的事物!如果链表操作中同时需要这两个操作,就应该考虑用pointer-to-pointer
新闻热点
疑难解答