![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
文章平均质量分 57
Booksort
纯粹小白,博客只为加深自己理解
展开
-
Leetcode-142.环形链表II(龟兔赛跑算法)
如有想看算法具体分析请看 龟兔赛跑算法逻辑分析 上一题 Leetcode-141.环形链表 已经分析了是否链表中会存在一个环结构。 这道题依然会使用龟兔赛跑算法。 但并不是与上一题一样。会继续对算法进行拓展。 题目要求,要找到环的入口,这就比上一道题要恶心多了。 继续要使用快慢指针。 fast=fast->next->next;//一次走两个结点 slow=slow->next;//慢指针一次走一个结点 为什么还要使用快指针一次走两个结点的方法呢? 想找环的入口的结点,则必须要先证明有原创 2021-04-14 20:45:31 · 400 阅读 · 4 评论 -
Leetcode-876.链表的中间结点-剑指22.到数第K个结点(快慢指针)
这种链表的题,找第几个结点,有个很骚的解法,就是用计数器找到那个结点,但是感觉完全避开了他想考察的算法。这种题应该使用要能熟练使用快慢指针这种算法。原创 2021-04-09 17:49:57 · 1410 阅读 · 13 评论 -
leetcode-203.移除链表元素
我首先想到的就是哨兵法。 也就是建一个新的头结点(其数据域无任何意义)。 struct ListNode* removeElements(struct ListNode* head, int val) { struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode));//开辟一个空间设置一个结点 struct ListNode* s; p->next = head; s = p; if (head == NU.原创 2021-04-04 23:09:39 · 283 阅读 · 1 评论 -
leetcode-两数相加(#2)
先来看题目 我写这道题的时候刚刚接触链表,我原先是想,链表元素提出来再相加,再放回链表。结果不断显示超出时间限制,被一个超出 long long 范围的数教做人。后来更新了方法。 struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { int num; struct ListNode* head=NULL,*p,*end; head=(struct ListNode*)malloc(sizeof(s原创 2021-03-17 19:43:05 · 111 阅读 · 0 评论 -
单链表通讯录以及编写过程的错误总结
链表所有代码Contact.hContact.cContact_main.c思路解读前言链表改造结构体构造问题对全局变量的引用问题 所有代码 Contact.h #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdlib.h> #define NAME 20 #define SEX 10 #define ADRESS 50 #define TELE 50原创 2021-03-13 11:28:49 · 457 阅读 · 0 评论 -
链表初始
再增加节点的同时,新增加的节点就是尾节点。 无论是头节点,尾节点,还是节点,都是结构体类型。图中,结构体类型,head中的date成员,一般是随机值,但也可以作为节点的计数器。 这应该是尾插法 #include <stdio.h> #include <stdlib.h> //每个节点数据域与指针域 typedef struct Node { int date; struct Node* next; }linklist; linklist* creat(int n) { lin原创 2021-03-12 21:38:04 · 112 阅读 · 0 评论