算法只基础~链表

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这个结点的位置。

 

相关文章:

  • 2021-08-04
  • 2021-05-12
  • 2021-07-21
  • 2022-01-06
  • 2022-03-04
  • 2021-10-09
  • 2021-04-15
  • 2022-12-23
猜你喜欢
  • 2021-12-22
  • 2022-12-23
  • 2021-09-27
  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2022-01-09
相关资源
相似解决方案