当前位置:   article > 正文

链表反转算法-迭代_单链表的迭代翻转c语言

单链表的迭代翻转c语言

反转链表

将单链表的链接顺序反转过来

  1. 例如:1->2->3->4->5->6->7->8->9->10
  2. 10->9->8->7->6->5->4->3->2->1

链表是以node的形式存放的

 要反转,那么第一个节点的next则指向null,如:

下一个节点的next要指向第一个节点的值。如:

 

解法:迭代,重复某一过程,每次处理结果作为下一次处理的初始值,这些初始值类似于状态、每次处理都会改变状态、直到到达最终状态。

从前往后遍历链表,将当前节点的next指向上一个节点,因此需要一个变量存储上一个节点prev,当前节点处理完需要寻找下一个节点、因此需要一个变量保持当前节点curr,处理完后要将当前节点赋值给prev,并将next指针赋值给curr,因此需要一个变量提前保存下一个节点的指针next

逻辑步骤:

  1. 将下一个节点指针保存到next变量 next = curr.next
  2. 将下一个节点的指针指向prev,curr.next = prev
  3. 准备处理下一个节点,将curr赋值给prev
  4. 将下一个节点赋值为curr,处理一个节点

实现代码案例

  1. package com.hx;
  2. public class ReverseList {
  3. static class ListNode{
  4. int val;
  5. ListNode next;
  6. public ListNode(int val, ListNode next) {
  7. this.val = val;
  8. this.next = next;
  9. }
  10. }
  11. public static ListNode iterate(ListNode head) {
  12. ListNode prev = null, next;
  13. ListNode curr = head;
  14. while (curr != null) {
  15. next = curr.next;
  16. curr.next = prev;
  17. prev= curr;
  18. curr = next;
  19. }
  20. return prev;
  21. }
  22. }

测试验证代码

  1. package com.hx;
  2. public class Test {
  3. public static void main(String[] args) {
  4. ReverseList.ListNode node10 = new ReverseList.ListNode(10,null);
  5. ReverseList.ListNode node9 = new ReverseList.ListNode(9,node10);
  6. ReverseList.ListNode node8 = new ReverseList.ListNode(8,node9);
  7. ReverseList.ListNode node7 = new ReverseList.ListNode(7,node8);
  8. ReverseList.ListNode node6 = new ReverseList.ListNode(6,node7);
  9. ReverseList.ListNode node5 = new ReverseList.ListNode(5,node6);
  10. ReverseList.ListNode node4 = new ReverseList.ListNode(4,node5);
  11. ReverseList.ListNode node3 = new ReverseList.ListNode(3,node4);
  12. ReverseList.ListNode node2 = new ReverseList.ListNode(2,node3);
  13. ReverseList.ListNode node1 = new ReverseList.ListNode(1,node2);
  14. ReverseList.ListNode iterate = ReverseList.iterate(node1);
  15. System.out.println(iterate);
  16. }
  17. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/209911
推荐阅读
相关标签
  

闽ICP备14008679号