首页 > TAG信息列表 > ListNode

leetcode237-删除链表中的节点

237. 删除链表中的节点   方法一:不断赋值,最后的那个指向NULL。这种方法有点想数组插入,没有充分利用链表的性质 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *

剑指 Offer 链表专题

一、剑指 Offer 18. 删除链表的节点   给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你

力扣61(java&python)-旋转链表(中等)

题目: 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例2:  输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 *

线性表(C语言实现)

线性表 顺序存储结构 # include "stdlib.h" # define LIST_INIT_SIZE 100 # define LIST_INCREMENT 10 typedef int elemtype; typedef struct { elemtype *elem; int length; int list_size; } SqList; // Create a linear table int createList(SqList *l)

力扣19(java&python)-删除链表的倒数第 N 个结点(中等)

题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <

letcode算法13--合并两个有序链表

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。    示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4]方法一:递归 /** * Definition for singly-linked list. * public class ListNode { * int v

148. 排序链表

148. 排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。   示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3: 输入:head = [] 输出:[]   提示: 链表中节点的数目在范围 [0, 5 * 104] 内 -

单向链表的实现过程

1、首先创建list.h文件:定义单向链表上的节点类型,节点上的数据类型,声明链表函数原型和删除链表函数原型 点击查看代码 #ifndef LIST_H_ #define LIST_H_ /* 给int类型起名为 datatype */ typedef int datatype /*定义节点结构体模板:struct ListNode*/ struct ListNode { da

浅谈双指针技巧(三)利用快慢指针,查找链表中指定位置节点

前面两篇文章主要介绍了,快慢指针在链表环中的应用。除此之外,我们还常常利用快慢指针来查找单向链表中指定位置的节点。常见的经典题目有:1、查找倒数i位置的的节点2、查找中间节点我们依次来看一、查找快慢指针查找单链表中位于倒数第i个位置的元素力扣 剑指 Offer 22. 链表中倒数

leetcode-优先级队列-23

/** * <p>给你一个链表数组,每个链表都已经按升序排列。</p> * * <p>请你将所有链表合并到一个升序链表中,返回合并后的链表。</p> * * <p>&nbsp;</p> * * <p><strong>示例 1:</strong></p> * * <pre><strong>输入:</strong>lists =

终于实现了一门属于自己的编程语言

前言 都说程序员的三大浪漫是:操作系统、编译原理、图形学;最后的图形学确实是特定的专业领域,我们几乎接触不到,所以对我来说换成网络更合适一些,最后再加上一个数据库。 这四项技术如果都能掌握的话那岂不是在 IT 行业横着走了,加上这几年互联网行业越来越不景气,越底层的技术就越不可

24. 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。       /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(

算法--链表

      方法一:构造链表 如果此类型的题出现在笔试中,如果内存要求不高,可以采用如下方法:可以先用一个vector将单链表的指针都存起来,然后再构造链表。此方法简单易懂,代码好些。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL

链表的头插法和尾插法

复习一下链表的插入操作 头插法 创建一个临时节点存放数据 将头部指针后面的数据都链接到这个临时节点后面 将这个临时节点再链接到头部指针后面 尾插法 创建一个临时节点存放数据 将这个临时节点链接到用于的移动的插入元素位置的指针上 将这个指针向后移动到链

61. 旋转链表

61. 旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。   示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1]   提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100

NowCoder BM1 反转链表

描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 NowCoder BM1 反转链表 import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val =

LeetCode 21. 合并两个有序链表

题目 题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/ 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3:

61. 旋转链表

提示:这个题目比较简单,只需要找到待断处的前一个节点就行, 题目描述: 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 案例: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3]     输入:head = [0,1,2], k = 4 输出:[2,0,1]   /** * Definition for si

LetCode算法--2.两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 来源:力扣(LeetCode)链接:https://leetcode.cn/

两数相加

题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 输入:l1 = [2,4,3], l2 = [5,6,4

删除链表结点类问题

删除链表结点 NO1. 删除链表倒数第 k个结点 给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针。要求:空间复杂度 \(O(1)\),时间复杂度 \(O(n)\) 如果倒数第 k 个结点刚好是头结点,那头结点需要特殊处理。为了各个结点能等同操作,设置一个虚拟头结点。 寻找倒数第 k 个结点

链表应用题

1. 递归删除指定值(无头结点) void Del(ListNode* L,int val){ ListNode* p;//指向被删除节点 if(L==NULL) return;//递归边界 if(L->val==val){//处理首指针 p = L; L = L->next; free(p);//删除节点 Del(L,val);//递归调用 }

leetcode数组题目

1.两数之和 1.1 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 1.2 示

剑指offer系列:从尾到头打印链表

Java实现方式 描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 代码 /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.*;

算法总结

今天放两道刚刷的关于链表的题 package com.chenghaixiang.jianzhi2.day09; import java.util.ArrayList; import java.util.List; /** * @author 程海翔 * @school 石家庄铁道大学 */ public class Office027 { } //给定一个链表的 头节点 head ,请判断其是否为回文链表。