草庐IT

leetcode刷题之回文链表

全部标签

代码训练录训练营day04 | 链表part2 | 环形链表II

题目链接🔗:环形链表II 题意:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。说明:不允许修改给定的链表。 思路:从两个方面考虑:1、是否有环2、如果有环,找到环的入口判断是否有环的思路是定义快慢指针,慢指针每次移动一步,快指针每次移动两步,快慢指针如果在环内相遇则链表有环,如果没有相遇则链表无环有环之后,来找环的入口,假设从头结点到环形入口节点的节点数为x。环形入口节点到fast指针与slow指针相遇节点节点数为y。从相遇节点再到环形入口节点

【数据结构】单链表之--无头单向非循环链表

前言:前面我们学习了动态顺序表并且模拟了它的实现,今天我们来进一步学习,来学习单链表!一起加油各位,后面的路只会越来越难走需要我们一步一个脚印!💖博主CSDN主页:卫卫卫的个人主页💞👉专栏分类:数据结构👈💯代码仓库:卫卫周大胖的学习日记💫💪关注博主和博主一起学习!一起努力!单链表今天我们要实现的全部功能就如下所示,功能很多我们一步一步来,一起来手撕链表吧!加油!typedefintSLNDataType;typedefstructSList{ intval; structSList*next;}SLNode;//单链表的打印voidSLTPrint(SLNode*phead);//单链表的尾插

LeetCode | 206. 反转链表

LeetCode|206.反转链表OJ链接这里有两个思路我们先来看第一个思路:创建一个新的链表,然后将原链表头插头插需要保存下一个的地址,再头插代码如下:structListNode*reverseList(structListNode*head){structListNode*cur=head;structListNode*newHead=NULL;while(cur){structListNode*next=cur->next;//头插cur->next=newHead;newHead=cur;cur=next;}returnnewHead;}思路二:这个思路二,就是定义三个指针,n1,n

leetcode 74. 搜索二维矩阵(java)

搜索二维矩阵leetcode74.搜索二维矩阵题目描述抽象BST代码演示抽象BSTleetcode74.搜索二维矩阵来源:力扣(LeetCode)链接:https://leetcode.cn/problems/search-a-2d-matrix题目描述给你一个满足下述两条属性的mxn整数矩阵:每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数target,如果target在矩阵中,返回true;否则,返回false。示例1:输入:matrix=[[1,3,5,7],[10,11,16,20],[23,30,34,60]],target=3输出:tru

【数据结构】链表经典OJ题,常见几类题型(一)

目录题型一:反转单链表思路解析OJ题实例解题代码题型二:快慢指针思路解析OJ题实例解题代码两类题型的结合题型一:反转单链表思路解析反转一个链表主要是想让第一个节点指向NULL,第二个节点指向第一个,以此类推。那么我们不难想到,想要反转其中一个节点,两个指针肯定是不够的,所以这就要求我们定义三个指针:分别指向当前节点n2,前一个节点n1,后一个节点n3。这里定义的三个指针主要作用:n1是为了能让当前节点能指向前一个节点地址,而n1就是记录前一个节点的地址,n3是为了在反转当前节点后,能找到后一个节点的地址。那么定义一个循环后依此思路便可反转链表了。当然循环结束的条件为n3==NULL,那么再仔细

leetcode:206. 反转链表

一、题目 函数原型:structListNode*reverseList(structListNode*head)二、思路要对链表进行反转,可以有两种方法:1.改变链表中每个结点之间的指针域指向,最后返回尾结点即可。2.新建一个链表,将原链表中的结点依次头插到新链表中,最后返回新链表。三、代码实现代码1/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*reverseList(structListNode*head){if(head==NULL)/

【数据结构篇C++实现】- 线性表 - 顺序表和链表

友情链接:C/C++系列系统学习目录文章目录🚀线性表🚢一、线性表的定义🚀线性表的顺序存储结构🚢一、顺序表🛴(一)顺序表的原理精讲🛴(二)顺序表的相关代码实现1.顺序表的结构体定义2.顺序表初始化3.顺序表插入元素4.顺序表删除元素5.查找某个元素,并且获取值6.读取、打印顺序表所有元素7.顺序表销毁🚀线性表的链式存储结构🚢一、单链表🛴(一)单链表的原理精讲🛴(二)单链表相关代码实现1.单链表的结构体定义2.单链表的初始化3.单链表增加元素(1)前插法(2)尾插法(3)指定位置插入4.单链表删除元素5.单链表查找、获取元素6.单链表的遍历7.单链表的销毁🚢二、静态链表🛴(一)静态链表原理精讲1.

图的存储结构-十字链表

图的存储结构图的存储结构-十字链表十字链表的结构顶点结点弧结点十字链表结点:有向图十字链表使用十字链表法创建一个有向图过程图解图的存储结构-十字链表十字链表(OrthogonalList)是有向图的一种链式存储结构。可以看成是将有向图的邻接表和逆邻接表结合起来得到的一种链表。在十字链表中,对应于有向图中每一条弧有一个结点,对应于每个顶点也有一个结点。十字链表的结构顶点结点typedefstringInfoType;typedefstringVertexType;typedefstructVexNode{VertexTypedata;//顶点的数据域ArcBox*firstIn;//指向该顶点的

leetcode链表

这几天手的骨裂稍微好一点了,但是还是很疼,最近学校的课是真多,我都没时间做自己的事,但是好在今天下午是没有课的,我也终于可以做自己的事情了。今天分享几道题目移除链表元素这道题我们将以两种方法开解决,但是我觉得从总体思路上来讲,都可以称为双指针,第一个就是我们在我们原链表上进行修改,我们和之前顺序表的一个题目很是相似,就是我们遇到val就删除,那因为是链表,我们可以理解为释放它这个当前的空间,然后进行当前位置的前一个和后以一个位置的链接就行。我们给两个指针,然后cur的作用就是进行遍历,我们的prev这个指针就是找到它当前位置的前一个位置,因为我们要删除当前的位置,如果没有前面这个前驱指针,我们