java 单链表翻转四种方法
时间: 2023-09-17 11:01:32 浏览: 121
Java 单链表翻转可以采用以下四种方法:
1. 迭代法:
迭代法是通过遍历链表,将每个节点的指针指向前一个节点来实现翻转。需要用到三个指针,分别是当前节点、当前节点的前一个节点和当前节点的后一个节点。具体步骤如下:
- 初始化当前节点为头节点,前一个节点和后一个节点都为 null。
- 进入循环,循环条件是当前节点不为 null。
- 在循环内部,先用一个临时变量保存当前节点的后一个节点。
- 将当前节点的指针指向前一个节点。
- 更新前一个节点为当前节点,当前节点为临时变量保存的后一个节点。
- 重复上述步骤直到当前节点为 null。
- 最后将头节点指向反转后的链表的头节点,并返回头节点。
2. 递归法:
递归法是利用递归的思想实现链表翻转。
- 首先判断链表是否为空或者只有一个节点,如果是,则直接返回该链表。
- 否则,递归调用翻转链表函数,将头节点的下一个节点作为参数传入。
- 在翻转函数内部,先递归翻转后面的链表。
- 接着将头节点的下一个节点的下一个节点指向头节点,同时将头节点的下一个节点指向 null。
- 最后返回翻转后的链表的头节点。
3. 栈法:
栈法是利用栈的先进后出特性实现链表翻转。
- 先将链表的所有节点依次入栈。
- 然后从栈中依次弹出节点,每次弹出的节点都是从末尾开始的,依次指向前一个弹出的节点。
- 最后返回栈顶节点作为新的链表的头节点。
4. 头插法:
头插法是依次将链表的节点插入到一个新的链表中,并将新的链表的头节点指向原链表的尾节点。
- 首先创建一个新的空链表和一个指向原链表的头节点的指针。
- 进入循环,循环条件是原链表的指针不为 null。
- 在循环内部,先保存原链表指针的下一个节点,然后将原链表指针当前指向的节点插入到新链表的头部。
- 更新原链表指针为保存的下一个节点。
- 重复上述步骤直到原链表指针为 null。
- 最后返回新链表的头节点。
以上四种方法都可以实现单链表的翻转,具体选择哪种方法取决于个人偏好和场景需求。
阅读全文