翻转一个链表
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
递归方法
java
1 | /** |
python
1 | """ |
非递归方法
定义三个节点:
newhead翻转后的头节点
p向前走的节点
prev要插入节点的前一个节点,同时在循环中还有一个节点pNext临时保存p的下一个节点
初始值:p=head,prev = null,newead = null
在循环中:
先pNext = p.next 临时保存p的下一个节点,防止链表断链
p.next = prev p的下一个节点直线prev节点,就是翻转,链接到其前面的一个节点,为了保持每次都能这样链接
prev = p prev节点向后移动一个节点
最后p = pNext 循环下去
同时要找到链表的头节点
当p.next==null的时候 newHead = p p就是头节点,其实运行结束时候的prev节点就是指向头节点的,单独搞个头节点,看着舒服点
java
1 | /** |
python
1 | """ |