mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 02:53:42 +00:00
Update 6. 从尾到头打印链表.md
更新递归法代码并补充清空临时列表逻辑,在头插法部分补充修改原链表结构及使用场景的说明,并完成部分标点文字校对。
This commit is contained in:
@@ -14,12 +14,13 @@
|
||||
|
||||
### 1. 使用递归
|
||||
|
||||
要逆序打印链表 1-\>2-\>3(3,2,1),可以先逆序打印链表 2-\>3(3,2),最后再打印第一个节点 1。而链表 2-\>3 可以看成一个新的链表,要逆序打印该链表可以继续使用求解函数,也就是在求解函数中调用自己,这就是递归函数。
|
||||
要逆序打印链表 1-\>2-\>3(3,2,1),可以先逆序打印链表 2-\>3(3,2),最后再打印第一个节点 1。而链表 2-\>3 可以看成一个新的链表,要逆序打印该链表可以继续使用求解函数,也就是在求解函数中调用自己,这就是递归函数。
|
||||
|
||||
```java
|
||||
private ArrayList<Integer> tmp = new ArrayList<>();
|
||||
|
||||
public int[] reverseBookList(ListNode head) {
|
||||
tmp.clear();
|
||||
recurse(head);
|
||||
int[] ret = new int[tmp.size()];
|
||||
for (int i = 0; i < ret.length; i++)
|
||||
@@ -55,6 +56,8 @@ node1.next = node2;
|
||||
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/0dae7e93-cfd1-4bd3-97e8-325b032b716f-1572687622947.gif" width="420px"> </div><br>
|
||||
|
||||
需要注意的是,头插法直接修改了原链表的 next 指针,调用之后原链表的顺序被反转;不允许修改输入时用递归或栈。
|
||||
|
||||
```java
|
||||
public int[] reverseBookList(ListNode head) {
|
||||
// 头插法构建逆序链表
|
||||
|
||||
Reference in New Issue
Block a user