zoukankan      html  css  js  c++  java
  • 链表反转

    /*
    public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
    this.val = val;
    }
    }*/
    import java.util.*;
    public class Solution {
    public ListNode ReverseList(ListNode head) {
    ListNode cur= head;
    ListNode pre = null;
    if(head==null)
    return null;
    while(cur!=null){
    ListNode tem = cur.next;
    cur.next = pre;
    pre = cur;
    cur = tem;
    }
    return pre;
    }
    }
    链表反转详解:
    链表是单链表,只可以指向后面的节点,遍历也只可以向后。
    所以需要new一个新的ListNode用来存储反转后的链表。pre
    然后还需要一个临时ListNode来存储临时存储当前节点指向的节点。(这里must,因为下一步会把当前节点的下一个指针变更,要是没有这一步,下一步执行了,当前节点的.next就丢失了。)
    然后把当前节点的下一个指针指向已经反转后的节点,(这里也是must,也是核心,当前节点的下一个节点=(赋值符号)之前已经反转的节点,执行完这一步当前节点指向的链表都是反转之后)
    然后当前节点所带领的链表就是反转后的链表。赋值给pre(把反转之后的链表再次赋值给存储反转之后的链表pre)
    然后把临时表指向的当前链表的后一个指针赋值给当前链表,继续循环。(这里取刚才第一步临时链表存储的当前节点的下一个节点)。

    总结:设计到链表的问题,总会需要一个临时表来存储当前节点的下一个节点,然后再对此节点进行操作。

    文学使思想充满血与肉,他比科学和哲学更能给予思想以巨大的明确性和说明性。
  • 相关阅读:
    3373=数据结构实验之查找一:二叉排序树
    3345=数据结构实验之二叉树六:哈夫曼编码
    3341=数据结构实验之二叉树二:遍历二叉树
    3340=数据结构实验之二叉树一:树的同构
    3362=数据结构实验之图论六:村村通公路
    Object处理方法返回值
    ASPCTJ
    myBatis 多对多
    初识MyBatis
    测试题
  • 原文地址:https://www.cnblogs.com/zpsblog/p/15097665.html
Copyright © 2011-2022 走看看