数据结构学习
Xi_Ting Fro
这个作者很懒,什么都没留下…
展开
-
力扣142,判环找起点
力扣原题位置 解题思路: 两个指向头结点的指针,快的走两步,慢的走一步,快针后面没结点时(偶数个结点),或者快针已经走到了空针(奇数个结点)时,走完链表,如果快针和慢针相遇了,说明有环。假设环起点距离两针相遇点m,慢针走了k步到达相遇点时,快针一定走了2k步,即多走了k步,这k步就是在环内转圈,k是从相遇点为起点的圆的整数倍,转换一下就是从环起点开始的圆的整数倍,对于环外情况的慢针,走了k步,相遇点距离环起点m步,所以从head走k-m步就是环起点,对于环内走的情况,因为两针在同一点,任选一针从相遇点走k-原创 2022-04-10 12:15:26 · 546 阅读 · 0 评论 -
力扣23,合并k的有序链表
class Solution { public: //仿写比较运算符实现greater比较,建立小根堆,大于当前结点下沉 struct cmp { bool operator()(ListNode* a, ListNode* b) { return a->val > b->val; } }; ListNode* mergeKLists(vector<ListNode*>&.原创 2022-04-09 19:50:38 · 1342 阅读 · 0 评论 -
合并两个有序链表
创建一个虚拟头结点dummy,分别比较两链表的值,小的连接到dummy后,指针后移 class Solution { public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { //虚拟头结点 ListNode* dummy = new ListNode(-1); ListNode* p = dummy; ListNode* p1 = list1;原创 2022-04-09 16:12:34 · 398 阅读 · 0 评论 -
数据结构-单链表操作及实现
单链表基本操作实现 : 头插法创建单链表 LinkList List_HeadInsert(LinkList &L) 按序号查找结点 LNode *GetElem(LinkList L,int i) 按值查找结点 LNode *LocateElem(LinkList L,ElemType e) 后插操作 bool InsertAfterNode(LinkList p,ElemType e) 前插操作,思路就是让s作为现在的p,然后原来的p就成了现在的p的前驱结点 bool InserPrioterN原创 2021-08-08 20:24:08 · 496 阅读 · 0 评论 -
数据结构_顺序表实现及其操作
数据结构_顺序表实现及其操作 程序大量参考自王道《数据结构》以及博主lady_killer9的数据结构专栏 主要实现顺序表的建立,顺序表的基本操作以及部分王道课后习题: 顺序表基本操作实现顺序表的基本操作 InitList(SqList &L): 初始化表,构造一个空的线性表; Length(SqList L): 求表长。返回线性表L的长度; LocateElem(SqList L,ElemType e): 按值查找,查找表中是否有值e; GetElem(SqList L,i原创 2021-08-08 11:28:19 · 1319 阅读 · 0 评论