代码都是在idea中能够运行的,如要运行,请复制我第一篇文章的代码,然后把方法复制粘贴过去,然后再main方法中调用就可以了。
链表反转
插入法
就是新建一个链表,然后设置呀节点,每次都把旧链表的一个节点,插入到新链表当中(呀节点和下一个节点的中间)。
//链表的反转 插头法
public void reverseList(){
Node nat = new Node(-1);
Node cur = head;
while (cur != null){
//旧链表存下下一个节点的位置
Node next = cur.next;
//插入节点
cur.next = nat.next;
nat.next = cur;
//旧链表找到下一个节点
cur = next;
}
head = nat.next;
}
穿针引线法
就是设置一个空链表,把旧链表的节点一个一个的指向新链表的过程。
存储下一个节点,然后让当前节点的指向新链表,改变新链表头的位置,然后回到提前储存的节点,循环此过程。(不好理解如下)
图示
//链表的反转 穿针引线法
//逻辑 先存储下一个节点,然后让当前节点的指向新链表,改变新链表头的位置,然后回到提前储存的节点,循环此过程。
public void reverseList1(){
Node cur = head;
Node prev = null;
while (cur != null){
Node next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}
head = prev;
}