首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python3

    3-8 读写内存流

    前面第二节,介绍了文件流类FileStream,本节要继续介绍其他流。那么什么是流?在.net程序中,涉及的输入和输出都是通过流来实现的。流是串行化设备的抽象表示,流以读/写字节的方式从存储器读/写数据。存储器是存储媒介,磁盘或内存都是存储器。正如除磁盘外还存在着多种存储器,除文件流之外也存在多种流,例如:网络流、内存流、缓存流等。类Stream及其派生类组成流的家族。如图3-12所示:

    1.3K20发布于 2020-01-06
  • 来自专栏AI机器学习与深度学习算法

    机器学习入门 3-8 Numpy 中的聚合运算

    在原生 Python 中,如果我们想计算一个元素为数值型的可迭代对象中所有元素的和,可以使用 Python 内置的 sum 函数。在 NumPy 中不仅支持 Python 内置的 sum 函数,而且还提供了优化后的 numpy.sum。

    68520编辑于 2022-05-25
  • 来自专栏cwl_Java

    C++编程之美-结构之法(代码清单3-8)

    代码清单3-8 int nTargetLen = N + 1; // 设置目标长度为总长度+1 int pBegin = 0; // 初始指针

    27430编辑于 2022-11-30
  • 来自专栏嵌入式学习

    链表——新建链表

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct node { int data; struct node *pNext; }; //新建node struct node * create_node(int data) { struct node *p = (struct node *) malloc (sizeof(struct node)); if(NULL == p) {

    1.7K40发布于 2020-09-07
  • 来自专栏学习

    链表篇》---相交链表

    题目链接 相交链表 方法一:哈希集合 判断两个链表是否相交。使用哈希集合存储链表节点。 创建一个哈希Set集合。先将链表A中的节点放入这个集合中。 再遍历链表B。 pA 从链表 headA 的头部开始遍历,pB 从链表 headB 的头部开始遍历。 如果 pA 到达了链表 headA 的末尾(pA == null),就让它跳到链表 headB 的头部继续遍历。 当 pA 到达链表headA的末尾时,pA 被重置为链表headB的头部,这是为了让 pA 开始遍历链表headB。 类似地,当 pB 到达链表headB的末尾时,pB 被重置为链表headA的头部。 通过这种方式,两个指针在遍历完自己的链表后,会从对方的链表头开始遍历。 由于两个指针都会遍历两个链表的总长度,无论两个链表的长度是否相同,最终两个指针会在相交节点处相遇,或者同时到达链表的末尾(即没有相交节点的情况)。

    31810编辑于 2024-10-24
  • 来自专栏csdn-nagiY

    【Leetcode】反转链表 合并链表 相交链表 链表的回文结构

    【Leetcode21】合并两个有序链表 1.链接 合并两个有序链表 2.题目再现 3.三指针尾插法 思路:创建一个新的链表,分别遍历两个链表,小的就尾插到新链表,然后指针向后走一步,直到有一方为空时就结束循环 ;结束循环后,判断哪个链表不为空,把不为空的尾插到新链表中去。 分表遍历两个链表,比较其值,小的尾插到新链表,并向后走一步(如果一样大,那么随便取哪一个都行); 4.结束循环后,判断哪个链表不为空,尾插到新链表。 【Leetcode160】相交链表 1.链接 相交链表 2.题目再现 3.解法 1.先分别遍历两个链表,记录下两个链表的长度; 2.如果两个链表尾节点的地址一样,则说明它们相交,否则不相交,(注意是地址不是值 ); 3.求出两个链表长度的差gap; 4.先让长的链表走差距步gap,短的链表先不动; 5.然后两个链表同时走一步,比较每走一步时两个链表当前节点的地址,如果一样,则说明找到了它们相交的起始位置

    41610编辑于 2024-01-23
  • 来自专栏韩曙亮的移动开发专栏

    【数据结构】线性表 ② ( 链式存储结构 - 链表 | 链表分类 - 单链表链表 非循环链表 循环链表 | 链表优缺点 )

    一、链式存储结构 - 链表 链式存储结构 就是 链表 LinkedList ; 链式存储结构 ( 链表 ) : 数据 存储在 节点 中 , 每个节点包含 数据值 和 指向下一个节点的指针 ; 通过节点之间的指针关系 Object data; // 指向下一个节点 Node next; // 指向上一个节点 Node last; } 二、链表分类 - 单链表 / 双链表 / 非循环链表 / 循环链表链表 与 双链表 : 单链表 : 上述链表是 单链表 , 单链表 只有一个指针 指向下一个节点 ; 双链表 : 还有一种链表是 双链表 , 双链表 有两个指针 , 一个指向下一个节点 , 一个指向上一个节点 ; 循环链表 : 如果 最后一个节点的指针 指向 第一个节点 , 那么这个链表就是循环链表 ; 链表可以分为以下四类 : 单链表 单循环链表链表 双循环链表 三、链表优缺点 链表 LinkedList 链表 LinkedList 缺点: 查询 性能低 : 如果要访问 链表中 指定位置的元素 , 需要从头节点开始遍历到目标位置 , 时间复杂度为O(n)。

    84640编辑于 2023-10-11
  • 来自专栏嵌入式项目开发

    C语言-链表(单向链表、双向链表)

    ,而且链表的空间是存储在堆上面的,可以动态分配,释放。 链表的每个节点就是一个结构体变量,节点里有一个或者两个指针,可以保存上一个节点和下一个节点的地址,方便遍历链表,删除、插入节点时定位位置。 2. 实现的功能如下: 初始化链表头 插入节点的函数(链表任意位置插入,链表尾插入) 删除节点的函数(链表任意位置删除、链表尾删除) 遍历链表,输出链表里的所有信息 #include <stdio.h> #include 找到链表尾 while(next_p! 找到链表尾 if(head!

    3.3K41编辑于 2022-01-07
  • 来自专栏P_M_P学习笔记

    Leetcode:相交链表,环形链表,环形链表||

    相交链表 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 思路: 先分别遍历两个链表,得出两个链表的节点个数和两个链表节点数的差,再创建两个指针指向两个链表,让节点数较多的链表的指针先遍历这个差值的节点数,然后两个指针再同时遍历,当两个指针指向的节点的地址相同时 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。

    47510编辑于 2024-01-20
  • 来自专栏P_M_P学习笔记

    【Leetcode】重排链表、旋转链表、反转链表||

    重排链表 题目描述 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 提示: 链表的长度范围为 [1, 5 * 104] 1 <= node.val <= 1000 方法一: 将链表的每一个节点存在数组里,然后用下标访问的方式,交叉连接。 ,然后将中点后的链表翻转成一个新的链表,最后将这个新链表和原链表切割掉中间节点之后的链表合并成一个新的链表,合并方式是交叉合并。 题目描述 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表

    37610编辑于 2024-01-19
  • 来自专栏学习

    链表篇》---反转链表

    题目链接 反转链表 方法一:迭代 循环从第二个节点开始。 首先判断若没节点head为null 或者 若只有一个节点。head.next = null。则返回head。 接下来 定义一个 cur 节点,指向链表的第二个节点。这个 cur 将用于遍历链表。 将当前 head 节点的 next 设为 null,因为它将成为反转链表的末尾节点。 之后 开始遍历链表并反转指针 1.ListNode curNext = cur.next; 保存cur.next的值,防止丢失。 2.cur.next = head 反转链表。 令cur.next指向前一个节点 3.head = cur 设置反转链表的头结点。 假设链表的其余部分已经被反转,现在应该如何反转它前面的部分?

    44310编辑于 2024-10-24
  • 来自专栏学习

    链表篇》---回文链表

    题目传送门 方法一:将值复制到数组中后用双指针法 思路: 1.将链表的值赋值到顺序表当中。 2.使用双指针法,判断顺序表中的值是否是回文。 left++; right--; } return true; } } 方法二:使用栈 思路: 1.先将链表中的值全部入栈 2.遍历链表,若链表元素与栈顶元素相等,则出栈。 3.栈最后为空,返回true。栈不为空返回false。 反转后半部分链表。 判断是否回文。 恢复链表。 返回结果。 isPalindrome(ListNode head) { if (head == null) { return true; } // 找到前半部分链表的尾节点并反转后半部分链表

    24810编辑于 2025-05-31
  • 来自专栏X

    Leetcode|找单链表中点+链表反转+链表合并|143. 重排链表

    1 寻找单链表中点 + 链表反转 + 链表合并 这道题是道综合题,把三个知识点串起来,非常适合复习链表处理的三个技巧 【思路】:观察发现可以把链表后一半进行反转,然后当成两个链表的合并任务即可 class head) return; // 1.寻找链表中点(快慢指针) auto premid = findmid(head); // 2.链表反转(pre/cur auto l1 = head; auto l2 = premid->next; premid->next = nullptr; // 3.链表合并 (先保存next然后穿针引线) merge(l1, l2); } // 合并链表 void merge(ListNode* l1, ListNode* l2) { while (l1 && l2) { // 先保存两个链表的next auto l1next = l1->next; auto l2next

    63430编辑于 2022-01-10
  • 来自专栏学习

    链表篇》---环形链表

    22200编辑于 2025-05-31
  • 来自专栏码匠的流水账

    leetcode链表之反转链表

    序 本文主要记录一下leetcode链表之反转链表 题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

    69720发布于 2020-09-14
  • 来自专栏全栈程序员必看

    环形链表(链表)

    给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 进阶: 你能用 O(1)(即,常量)内存解决此问题吗? 示例 3: 输入:head = [1], pos = -1 输出:false 解释:链表中没有环。 提示: 链表中节点的数目范围是 [0, 104] -105 <= Node.val <= 105 pos 为 -1 或者链表中的一个 有效索引 。

    47930编辑于 2022-09-22
  • 来自专栏全栈程序员必看

    Java链表——创建链表对象

    链表是一种简单的数据结构。由两部分构成,数值部分和指针部分。 前一部分用来存储数据,后一部分存放的是下一个数据的地址,用于指向下一个数据。形成一个链状的结构。 我们在包里新建一个类,在需要使用链表时,用此类创建链表对象即可。链表是由一个个节点构成的,我们建立一个节点类,目的是通过此类能够创建一个链表节点。然后就能以他为起点,插入其他的节点形成链,成为链表链表的一个节点需要具备以下要素: 值域 指针 构造函数 调用私有变量的函数 public class ListNode { private int val; private ListNode next 这样我们就可以在其他的类中建立链表对象了,像这样; ListNode firstNode = new ListNode(1); ListNode secondNode = new ListNode(2) 链表的插入操作 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141065.html原文链接:https://javaforall.cn

    1.5K20编辑于 2022-08-24
  • 来自专栏c++与qt学习

    清空链表和销毁链表

    清空链表和销毁链表的区别: 清空链表:将所有除头节点以外的存放有数据的节点释放掉 销毁链表:将包括头结点在内的所有节点释放掉 注意:当清空所有有数据的节点,并且释放头结点后,该链表就无法再通过头结点创建 ,访问,插入,删除节点,因此相当于销毁了此链表 清空链表 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef struct LinkNode { int num; LinkNode* next; }Lk, * lk; //有头链表的初始化 lk initLinkNode() { //创建头结点 lk 注意:清空链表后,链表还是可以继续使用 ? 画图说明: ? 注意销毁链表后,就不能对链表进行任何操作,否则为访问权限冲突,因为头结点指向的内存的操作权限已经归还给了操作系统 ? 画图说明: ?

    3.1K10发布于 2021-03-02
  • 来自专栏程序员小熊 带你学算法

    链表之环形链表

    不论在面试或者刷题过程中,很大概率都会遇到环形链表这种类型的题目,例如141. 环形链表 以及142. 环形链表 II等,本文主要介绍通过快慢指针法来解决此类题型,以供大家参考。 环形链表 环形链表大致样子如下图所示: image.png 快慢指针法 判断链表是否是环形链表,一般通过快慢指针法。 本题除了需要判断链表是否有环外,如果有环还要求入环的第一个节点,因此是上一个题目的升级版本,还是以快慢指针中举例的那个链表作为示例,下图将描述当链表有环的时候,如何求出入环的第一个节点,见下图示: 已判断链表有环 image.png 求入环的第一个节点 让慢指针重新指向链表的头节点,并让快慢指针同时每次只走一步 faster:5--->6--->7 slower:1--->2--->3 image.png image.png 因此,由上面的图可知,当判断链表有环(快慢指针相遇)之后,再让快(或者慢)指针重新指向链表头节点,另外一个指针仍保持指向不变,然后让快/慢指针同时走,且每次只走一步,当他们再次相遇时

    1K20发布于 2021-02-17
  • 来自专栏wfaceboss

    链表----链表(Linked List)入门

    在分析链表之前,我们先来对之前的动态数组、栈、队列总结一下: (1)底层依托于静态数组 (2)依靠resize解决固定容量问题 ? (3)是一种假的的动态数据结构 1.什么是链表 可以从以下两个部分来理解什么是链表 (1)最简单的动态数据结构,是一种真正的动态数据结构; (2)是一种数据的存储方式,数据存储在"节点"(Node)中 1.3 优点、缺点 优点:真正的动态,不需要处理固定容量的问题 缺点:丧失了随机访问的能力,也就是不能通过索引进行访问,只能next来进行查找 1.4数组与链表的对比 ?   1.5 基本的链表节点结构代码: 新建一个package(LinkedList),然后新建一个类LinkedList,在该类中封装一个私有的节点,便于后续对于节点的使用。 ,下一小节我们继续来学习如何如何在链表中添加元素。

    57030发布于 2019-04-08
领券