- 博客(15)
- 收藏
- 关注
原创 算法篇—众数
文章目录1.众数Ⅰ2.众数1.众数Ⅰa.b.思路🔶由于数组中超过n/2的数,只可能有一个,所以维护一个变量candidete。🔶如果遍历的数与candidete相等,count++。如果不相等,- -count。如果0==count,更新candidete。c.图解d.代码2.众数a....
2022-04-13 21:47:29 882 42
原创 算法篇—消失的数字与消失的两个数字
文章目录1.消失的数字2.1.消失的数字a.b.思路🔸将数组中的每一个数与ret1进行异或。🔸将0—numsSize中的每个数与ret2异或。🔸返回ret1^=ret2的结果。c.代码2.
2022-04-08 15:35:14 804 39
原创 算法篇—只出现一次的数字
文章目录1.只出现一次的数字Ⅰ2.只出现一次的数字Ⅱ1.只出现一次的数字Ⅰa.b.思路🔸数组中的每一个数都与ret进行异或。c.注意🔸相同的数进行异或,结果为零。🔸任何数与零进行异或,结果为本身。d.代码2.只出现一次的数字Ⅱa.b.思路...
2022-04-07 09:54:12 1470 37
原创 算法篇—颠倒二进制位与整数翻转
文章目录1.颠倒二进位2. 整数反转1.颠倒二进位a.b.思路🔸将二进制位 一位一位的取下来,一共取32次。🔸取下来的数从右向左重新组合。c.代码d.代码分析d.注意: 由于题目说的是无符号的整型,所以 unsigned int ret=0;2. 整数反转a.b.思路...
2022-03-30 14:05:45 723 43
原创 数据结构—栈与队列的基本操作(c语言实现)
栈***1.思考******2.基本操作的实现******3.测试***4.思考1.思考1.1 为什么栈用数组来模拟比用链表来模拟更优一些?2.基本操作的实现2.1 初始化栈void StackInit(stack*ps){ assert(ps); ps->_a = (StackDate*)malloc(sizeof(StackDate) * 4); ps->_top = 0; ps->_capacity = 4;}2.2 入栈void StackPush(st
2022-03-28 20:52:32 3770 30
原创 算法篇—旋转数组与旋转链表
文章目录1.旋转数组2.旋转链表1.旋转数组a.思路🔶将k%numsSize等效为m。🔶将区间[numsSize-m,numsSize-1]进行翻转,再将区间[0,numsSize-m-1]进行翻转。然后数组整体进行翻转。b.图解c.代码2.旋转链表a.思路🔶计算节点个数,nodesize。🔶将k%nodesize等效成m。🔶通过快慢指针,使slow指向倒数第m个节点。🔶将slow以后的链表进行翻转,将slow以前的链表进行翻转,然后整体翻转b.图解c.代码今天的
2022-03-20 18:21:52 1444 64
原创 算法篇-删除有序数组中的重复项
文章目录1.删除有序数组中的重复项Ⅰ2.删除有序数组中的重复项Ⅱ1.删除有序数组中的重复项Ⅰa.思路⭐定义变量 int dest=0,cur=1,nums[cur]与nums[dest]逐一比较。⭐nums[cur]!=nums[dest],将nums[cur]放入dest下一个位置,更新dest。⭐nums[cur]!=nums[dest],cur移动。⭐cur==numsSize,结束。返回dest+1。b.图解c.代码int removeDuplicates(int* nums
2022-01-19 21:09:07 6065 72
原创 数据结构—堆的基本操作(c语言实现)
1.基本函数实现a.代码1(向下调整)void AdjustDown(DateType*a, int n, int parent){ int child = parent * 2 + 1; while (child<n) { if ((child+1) < n && a[child] > a[child + 1]) { ++child; } if (a[parent] > a[child]) { Swap(&a
2021-11-20 21:29:22 1824 40
原创 c语言—常见字符串函数与sizeof详解
1.sizeof使用a.代码1int main(){ int a = 0; int arr[] = { 1,2,3,4 }; printf("%d\n", sizeof(a)); printf("%d\n", sizeof a); printf("%d\n", sizeof(&a));//表示地址的大小 printf("%d\n", sizeof(int)); printf("%d\n", sizeof(arr));//计算数组arr的大小(单位为字节) printf("
2021-11-05 21:04:40 9320 36
原创 数据结构-双向链表的基本操作 (c语言实现)
1.创造一个节点,函数实现DListNode* BuyListNode(Datetype x){ DListNode*node = (DListNode*)malloc(sizeof(DListNode)); node->date = x; node->next = NULL; node->prev = NULL; return node;}2. 初始化DListNode* DListInit(){ DListNode*plist = BuyListNod
2021-10-19 14:47:32 3634 35
原创 scanf与scanf_s函数的使用 详解
1.scanf_s(是vs提供的函数)a.代码1int main(){ char a = 0; //scanf_s("%c", &a, 1); scanf_s("%c", &a, sizeof(a)); return 0;}scanf_s有三个参数,最后一个是变量a所占据空间的大小(单位为字节),这里可以写1,也可以写sizeof(a)。如果a为整型的话,第三个参数就为4,或者sizeof(a)。b.代码2int main(){ char a =
2021-10-17 16:56:05 43952 46
原创 数据结构-循环队列的基本操作 (c语言实现)
1.初始化CQueue* CQueueInit(int k) { CQueue*pq = (CQueue*)malloc(sizeof(CQueue)); (pq->a) = (int*)malloc(sizeof(int)*(k + 1)); pq->front = 0; pq->tail = 0; pq->CQueueSize = k;}//k表示队列的有效数据个数如果按需申请空间,无法判空与判满,所以需要多申请一个空间(不存放数据)2.判空i.
2021-10-14 14:02:29 1215 19
原创 数据结构-单链表基本操作(c语言实现)
1.申请空间并初始化SLNode* BuySLNode(DateType x){ SLNode*node = (SLNode*)malloc(sizeof(SLNode) * 1); if (node == NULL) { printf("failed to open up capacity"); } node->date = x; node->next = NULL; return node;}相对于顺序表,按需求去申请空间,不存在空间浪费问题2.头插...
2021-10-10 17:39:13 2404 26
原创 数据结构-顺序表的基本操作(c语言实现)
1.初始化void SeqListInit(SeqList*pq){ assert(pq); pq->a = (int*)malloc(sizeof(int) * 4);//申请4个大小为int的空间 if (pq->a == NULL) { printf("Failed to open up space"); } for (int i = 0; i < 4; i++) { pq->a[i] = i; }//随便赋值了数值0 1 2 3 pq-&g
2021-10-09 14:33:48 623 33
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人