image.png

    image.png

    1. function foo(head){
    2. let list = head;
    3. let p = list;
    4. let q = null;
    5. if (p == null) return;
    6. while(p.next == null){
    7. q = p.next;
    8. p = q.next;
    9. q.next = list;
    10. list = q;
    11. }
    12. return;
    13. }

    反转链表的思路:1-2-3-4-5,先将2换到第一个,变为:2-1-3-4-5。然后将3换到第一个,3-2-1-4-5。以此类推。其中,p始终指向1,q指向p的下一个,即本轮需要换到第一个的数。
    如此列表:
    1-2-3-4-5
    2-1-3-4-5
    3-2-1-4-5
    4-3-2-1-5
    5-4-3-2-1