首页 > 其他分享 >链表的头插法和尾插法

链表的头插法和尾插法

时间:2022-09-01 20:36:02浏览次数:47  
标签:插法 ListNode list next 链表 节点

复习一下链表的插入操作

头插法

  1. 创建一个临时节点存放数据

  2. 将头部指针后面的数据都链接到这个临时节点后面

  3. 将这个临时节点再链接到头部指针后面

尾插法

  1. 创建一个临时节点存放数据

  2. 将这个临时节点链接到用于的移动的插入元素位置的指针上

  3. 将这个指针向后移动到链表末尾,用于接下来的插入,并且将指针域赋值为空

定义链表的代码

//链表定义
public class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

头插法

 //头插法
  ListNode head = list;  //链表的头指针 用于插入节点
  for (int i : arr) {
      ListNode s = new ListNode(i);  //用于存储数据的临时节点
      s.next = head.next;  //将链表的头结点后面的数据 给这个临时节点
      head.next =s;  //然后将这个临时节点重新链接到头结点后面
  }
  printlist(list.next);

尾插法

//尾插法
    ListNode p = list;  //链表的指针 可随插入节点位置移动
    for (int i : arr) {
        ListNode s = new ListNode(i);  //用于存储数据的临时节点
        p.next = s;  //将临时节点链接到链表头部的指针
        p = p.next;  //将指针向后移动
    }
    printlist(list.next);

遍历

public static void printlist(ListNode list) {
    while (list != null) {
        System.out.println(list.val + " ");
        list = list.next;
    }
}

标签:插法,ListNode,list,next,链表,节点
From: https://www.cnblogs.com/Cloong/p/16647740.html

相关文章

  • 206 反转链表
    题目206反转链表给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例......
  • 61. 旋转链表
    61.旋转链表给你一个链表的头节点head,旋转链表,将链表每个节点向右移动 k 个位置。 示例1:输入:head=[1,2,3,4,5],k=2输出:[4,5,1,2,3]示例2:输入:hea......
  • 前端也该刷点算法题——双指针解“链表”题也太香了叭!
    双指针解“链表”题也太香了叭!同步双指针1查找链表中倒数第k个节点剑指Offer22.链表中倒数第k个节点思路:假设链表的长度为n,不难得出倒数第k个节点即为整数第n+......
  • leetcode 1019. 链表中的下一个更大节点 js实现
    给定一个长度为 n 的链表 head对于列表中的每个节点,查找下一个更大节点的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值严格大于它的值。返回......
  • NowCoder BM1 反转链表
    描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。NowCoderBM1反转链表importjava.util.*;/*public......
  • Javascript中的链表
    Javascript中的链表数据结构的介绍文章。链表概念与应用于Javascript语言的实际示例。介绍数据结构是一种有效处理大量数据的手段,了解它的结构和组成为我们提供了更......
  • 数据结构之链表的原理
    链表:在计算机中用一组任意的存储单元存储线性表的数据元素称为链式存储结构,这组存储结构可以是连续的,也可以是不连续的,因此在存储数据元素时可以动态分配内存。注:在java中......
  • 从零构建链表
    最重要的头节点是这样创建的:        Node*Head=newNode;//头节点不存储数据        Head->next=NULL;        Node*pre=Head......
  • 83. 删除排序链表中的重复元素
    83.删除排序链表中的重复元素#由于是已排序的链表,判断前后是否为相同元素如果是则连接下下个不是则向前移动#code:#Definitionforsingly-linkedlist.#classLis......
  • 链表节点删除
      代码:1importjava.util.*;23publicclassMain{4publicstaticvoidmain(String[]args){5Scannerscan=newScanner(System.in);......