234. 回文链表 --力扣 --JAVA
题目 解题思路 判断链表是否为回文链表取决于链表中各个节点的值,所以可以通过存储各节点的值进行对比判断;链表的长度在遍历之前是无法获取的,所以使用list比链表相对好一点;回文链表是对称链表; 代码展示 class Solution { public boolean isPalindrome(ListNode head) { List<Integer> data = new ArrayList<>()...
【LeetCode刷题-链表】--876.链表的中间结点
876.链表的中间结点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { t...
【LeetCode刷题-链表】--203.移除链表元素
203.移除链表元素 方法:定义一个节点指向头节点head,避免头结点单独操作 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode...
【LeetCode刷题-链表】--82.删除排序链表中的重复元素II
82.删除排序链表中的重复元素II 由于链表是排好序的,所以只需要对其进行一次遍历即可,比较相邻节点对应的值 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = va...
【LeetCode刷题-链表】--146.LRU缓存
146.LRU缓存 方法一:哈希表+双向链表 使用一个哈希表和一个双向链表维护所有在缓存中的键值对 双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久使用的哈希表即为普通的哈希映射,通过缓存数据的键映射到其在双向链表中的位置 这样以来,我们首先使用哈希表进行定位,找出缓存项在双向链表中的位置,随后将其移动到双向链表的头部,即可在O(1)的时间内完成get...
【剑指Offer】:删除链表中的倒数第N个节点(此题是LeetCode上面的)剑指Offer上面是链表中的倒数第K个节点
给定一个链表,删除链表的倒数第 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] 在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummy node),它的 next 指针指向链...
线性表操作的实现--单链表(链式存储结构)
目录 文章目录 前言 一、链表是什么? 二、具体实现 1.单链表的定义 2.初始化ListInitiate(SLNode **head) 3.求当前元素的个数ListLength(SLNode *head) 4.插入ListInsert(SLNode *head,int i,DataType x) 5.删除ListDelete(SLNode *head,int i,DataType *x) 6.取元...
双向循环链表(C语言版)
双向循环链表是一种数据结构,其中每个节点都有一个指向前一个节点的指针和一个指向后一个节点的指针。这种结构允许我们在链表的开头和结尾之间进行高效的插入和删除操作。 以下是使用C语言实现双向循环链表的步骤: 1. 定义链表节点的结构体,包含数据域和两个指针域,分别指向前一个节点和后一个节点。 2. 初始化链表头节点,将其前后指针都指向自身。 3. 实现插入节点的函数,包括在链表头部插入、在链表尾部插入和在...
C语言链表
C语言是一种广泛应用于系统编程、嵌入式系统等领域的编程语言,其具有高效、可靠、灵活等特点,能够满足不同领域的编程需求。在C语言中,链表是一种重要的数据结构,可以实现动态存储数据,并且进行灵活的增删改查操作。本文将介绍C语言构造链表的方法,并且进行增删改查操作,同时对比线性表,探讨链表的优缺点。 一、链表的构造 链表是由若干个节点(Node)构成的,每个节点包含两个部分:数据域和指针域。数据域用来存储...
【LeetCode刷题(数据结构与算法)】:合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 **思路:定义一个头尾指针置为NULL while循环依次比较两个链表的值的大小 遍历链表 比较完数值大小过后连接到tail的尾部 然后各自的链表的节点的next指针指向下一个结点的地址 /** * Definition for singly-linked list. * struct ListNode ...