zoukankan      html  css  js  c++  java
  • 算法基础~链表【将链表逆序题(不可申请额外的空间)~头插法】

    算法只基础~链表

    1,基本知识:

    struct ListNode{
         int val;          //存储元素的数据域
         ListNode * next; //存储下一个结点地址的指针域 
    }    

    2,简单例题【将链表逆序题(不可申请额外的空间)~头插法】

    先看代码,再分析整个过程【so easy】

    public class Solution {
        public ListNode* reverseList(ListNode* head){
            ListNode* new_head = NULL;  //指向新链表头结点的指针
            while(head){
                ListNode *next = head->next;
                head->next = new_head;
                new_head = head;
                head = next;
            }
            return new_head;    //返回新链表头结点
        }
    }

    (1) 定义了一个新头指针 。     why?~ 看后边解析(1)

    (2) 定义一个指向原来链表head的下一个结点的指针next。  why?~ 看后边解析(2)

    先看思路过程,最后再解释why?

     解释

    (1)定义一个新头指针~链表的核心点就是头指针啦,通过头指针的next移动(获取当前结点位置)遍历完整个链表,so,头指针就是一个链表的象征

    (2)定义一个指向原来链表head的下一个结点的指针next~因为第一个过程head指在1这个结点,head位置需要指向2这个结点然后开始第二个该过程,so,

    next指针指向head的下个结点的作用,即标志到2这个结点的位置。

  • 相关阅读:
    Dijkstra模版
    Trie树|字典树的简介及实现
    hdoj_2066一个人的旅行
    什么是java对象的强、软、弱和虚引用
    cxf调用客户端的方法
    CXF几种客户端调用性能
    csf几种调用的性能考虑
    cxf生成服务器端
    CXF在jdk1.6中运行异常解决
    CXF几种客户端调用性能
  • 原文地址:https://www.cnblogs.com/shan333/p/15032539.html
Copyright © 2011-2022 走看看