Leetcode203 移除链表元素
练习 虚拟结点的使用,很方便,省去判断头节点的步骤。
Leetcode707 设计链表
单链表法和双向链表法
使用虚拟节点方便很多;
想清楚移动的时候要不要等于index
举例:得到的是目前index所在的节点
for (let i=0;i<=index;++i){
cur=cur.next;
}
得到的是index之前的一个节点,因为存在虚拟节点,所以index=0时也成立
pred = this.head;
for (let i=0;i< index;++i){ //没有等于号
pred=pred.next;
}
注意点:注意for循环的开始和结束条件,很容易错,导致debug很久。
Leetcode206 反转链表
双指针法:代码实现起来很简单,主要是想到让链表箭头调转。
递归法 : 和双指针法类似,分为从前向后翻转和从后向前反转。