hard! 题目描述: 给出一个链表,每 k 个节点为一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那…
分类:数据结构之链表
快慢链表和快慢指针
腾讯的一道面试题:如何快速找到位置长度单链表的中间节点?普通方法,就是先遍历,在从头找到2/length的中间节点。算法复杂度是:O(3*n/2)。而更快的方法就是利用快慢指针的原理。 快慢链表:利用标尺的思想,设置两个…
循环链表和约瑟夫环
循环链表的实现 单链表只有向后结点,当单链表的尾链表不指向NULL,而是指向头结点时候,形成了一个环,成为单循环链表,简称循环链表。当它是空表,向后结点就只想了自己,这也是它与单链表的主要差异,判断node->ne…
数组作链表
一般传统链表的物理结构,是由指针把一个一个的节点相互连接而成: struct node { DataType data; node* previous; node* next; } 其特点是按需分配节点,灵活动态增长。 …
单链表的逆置算法
1.问题描述 如何实现简单快速的实现单链表的逆置。(要求时空复杂度尽量低。) 2.问题解法 最简单的一个思路是遍历一遍链表,存储到临时数组,然后利用这个临时数组重新建立一个新的链表。这样的话时间复杂度暂且认为是O…
链表结构之有序链表
有序链表:存储有序数据的链表结构为有序链表. 有了以前链表的基础.写起来就很简单了.无非是从first循环链结点,一直找到一个大于当前链结点关键字的那个链结点.将追加的 这个链结点插到前面即可.需要注意的就是插入在头部和…
数据结构之链表-链表实现及常用操作(C++篇)
数据结构之链表-链表实现及常用操作(C++篇) 0.摘要 定义 插入节点(单向链表) 删除节点(单向链表) 反向遍历链表 找出中间节点 找出倒数第k个节点 翻转链表 判断两个链表是否相交,并返回相交点 判断链表是否有环路…
常见的链表排序(Java版)
上篇博客中讲解了九大内部排序算法,部分算法还提供了代码实现,但是那些代码实现都是基于数组进行排序的,本篇博客就以链表排序实现几种常见的排序算法,以飨读者。  …
C# 数据结构--单链表
什么是单链表 这两天看到很多有关单链表的面试题,对单链表都不知道是啥的我。经过学习和整理来分享一下啥是单链表和单链表的一些基本使用方法。最后看些网上有关单链表的面试题代码实例。 啥是单链表? 单链表是一种链式存取…
判断单链表是否存在环及求环入口点
判断单链表是否存在环及求环入口点 算法描述: 1、先判断是否有环 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入…
如何检测链表中存在的环
链表有环的定义是,链表的尾节点指向了链接中间的某个节点。比如下图,如果单链表有环,则在遍历时,在通过结点J之后,会重新回到结点D。 看了上面的定义之后,如何判断一个单链表是否有环呢? 思路一:快慢指针 这个可以用昨天提到…
通过二级指针删除链表节点看链表本质
在大多数情况下,会用到链表,但是一直都没有仔细深究过,今天抽点时间做了个实验。 在看内核源码时,会发现使用二级指针插入或删除节点的情况,比如在字符设备里面的__register_chrdev_region及在notifi…