数据结构与算法(C语言)
文章平均质量分 96
用C语言写数据结构
温柔了岁月.c
这个作者很懒,什么都没留下…
展开
-
有头双向循环链表(详解)
有头:头结点存储的是垃圾数据,头结点的下一个节点,存储的是有效数据。因为这个链表是双向,所以在这个链表中,会再定义两个指针,一个是指向链表当前节点的前一个指针,一个是指向链表当前节点的后一个指针。原创 2023-10-26 17:21:46 · 93 阅读 · 0 评论 -
无头单向非循环链表(详解)
链表的种类有很多1.分有头链表和无头链表2.分循环链表和非循环链表3.分单向链表和双向链表这里的话,我就讲解2种类型的链表,第一种是无头单向非循环链表,第二种是有头双向循环链表这里讲解第一种,第二种将会在下一篇博客中讲解如图所示,链表分为指针域和数据域,指针域一般命名为next指向下一个指针,起连接的作用,使数据连续,数据域如果a1, a2所示,用来存放链表中这个节点的数据无头链表的话,代表这第一个节点,也就是头结点,存放的数据是有效的。原创 2023-09-14 17:12:43 · 98 阅读 · 0 评论 -
顺序表的实现(详解版)
pragma once // 防止被重复包含 # include # include # include typedef int SLDateType;int size;//存储的有效数据 int capacity;// 存储数据的总容量 } SL;//接口函数 void SeqListInit(SL * ps);//初始化 void SeqListPrint(SL * ps);原创 2023-01-11 12:00:00 · 356 阅读 · 14 评论 -
剑指offer(数组相关面试题)
**思路一**:在nums数组中,一个元素一个元素的找,假设数组大小为N,如果第一个数等于val,那么就让第一个数 = 第二个数, 如果不想等,就跳过第一个数,比较第二个数 。**但是,时间复杂度通常考虑最坏的情况**, 当数组中的元素,大部分或者基本都为val,那么就第一个数 = 第二个数(挪动n - 1次),第二个数 = 第三个数(挪动n - 2次)(这样遍历), ........ **时间复杂度(就为一个等差数列)** = n - 1 + n - 2 + n - 3 + .....原创 2022-12-28 14:54:50 · 497 阅读 · 2 评论 -
时间复杂度和空间复杂度+剑指offer习题
:运**用异或的思想**异或(^): **两个相同数异或,结果为0** 0与任何数异或,结果为任何数 1与任何数异或, 都为1第一步,设x = 0,让x与 [0, n] 这个区间的所有数异或, ------> 0 ^ 0 ^ 1^ 2 ^ 3^ 4^ 5^6 ^.............n第二步,再让x 与数组中的每个值异或, ------> 0 ^ 0 ^ 1^ 2 ^ 3^ 4原创 2022-12-23 12:44:23 · 683 阅读 · 3 评论