C语言
文章平均质量分 74
C语言
原来45
阿里云专家博主,技术栈有C,C++,Go,dart,数据结构与算法,Linux系统编程,Linux网络编程,MySQL数据库等(gin,gorm,qt,python,flutter)。
想多了,都是问题。
做多了,都是答案。
展开
-
汉罗塔与青蛙跳台阶的递归实现(及扩展青蛙跳台阶)C语言从入门到入土(入门篇)(算法篇p2)
题目:汉罗塔递归实现 思路 实现 题目:青蛙跳台阶递归实现 思路 实现 青蛙跳台阶问题的延伸原创 2021-11-24 10:00:00 · 815 阅读 · 30 评论 -
打印素数和两个小游戏 C语言从入门到入土(入门篇)(算法篇p1)
目录1.打印100~200之间的素数2.输入密码,三次错误则退出程序3.猜数字游戏大家好呀!从今天开始,作者将开放 C语言(入门篇)(算法篇),因为一昧地只看文章不练习的话也是很难学好的哈!作者将会把平时遇到的好的或者觉得方法新奇的然后范围又在C语言(入门篇)中的题目来分享给大家!算法篇中的题目并不是说怎么去解决这一道题,而是怎样用更好的方法去解决这些题!!!1.打印100~200之间的素数//素数也是质数//只能被1和他本身整除的数字就是素数#include &l原创 2021-10-29 10:45:55 · 1854 阅读 · 12 评论 -
二叉树的中序遍历.leetcode94《数据结构入门到精通N16》
温馨提示:作者的刷题笔记只是作者认为比较好的题,供复习用哈,所以可能比较水哈,主要还是作者太懒了。94. 二叉树的中序遍历 - 力扣(LeetCode) (leetcode-cn.com)创建子函数是因为避免重复开辟数组,然后子函数用于递归。/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * ...原创 2022-04-25 15:51:10 · 531 阅读 · 11 评论 -
常见八大排序(附动图及W字详解)(C语言)《数据结构与算法》
直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序附带动图及W字详解,强烈建议进收藏夹吃灰哈。原创 2022-04-22 05:30:00 · 6095 阅读 · 181 评论 -
分治算法,二叉树例题《数据结构入门到精通N13-N15》
目录分治算法例一:相同的树例二:单值二叉树例三:二叉树的最大深度作者新建立的社区:非科班转码社区-CSDN社区云💖💛💙期待hxd的支持哈🎉 🎉 🎉分治算法思想思想就是大问题分成相同问题的子问题。分治就是递归。分治法在每一层递归上都有三个步骤: step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题 step3 合并:将各...原创 2022-04-15 05:30:00 · 880 阅读 · 38 评论 -
一篇解建堆,堆的实现,堆排序,TopK问题(C语言)《数据结构与算法》
这里作者是建的小堆,如果要建大堆就改作者在代码里面声明的地方,就把三个小于改成大于就可以了哈。源代码里面解决了:建堆(给一个数组建堆),堆的各项操作,堆排序,TopK问题。PS:代码里面有详细的解释哈。main函数里面test1里面是建堆的各项操作的测试及堆排序的测试。 test2里面是给一个数组然后建堆的测试哈。原创 2022-04-06 06:00:00 · 1225 阅读 · 127 评论 -
设计循环队列.leetcode622《数据结构入门到精通N12》
目录题目链接题目简介思路作者新建立的社区:非科班转码社区-CSDN社区云💖💛💙期待hxd的支持哈🎉 🎉 🎉题目链接622. 设计循环队列 - 力扣(LeetCode) (leetcode-cn.com)题目简介思路开一个数组,空间为k+1(留空)(因为如果不给k+1个空间,当front==tail会让人疑惑到底是为0个数据,还是数据满了,给了之后为0就是相等,满了会隔一个空间),然后转。// #define _CRT_SECURE_N.原创 2022-04-01 18:54:18 · 567 阅读 · 8 评论 -
复制带随机指针的链表.leetcode138《数据结构入门到精通N11》
目录题目链接题目简介思路作者新建立的社区:非科班转码社区-CSDN社区云💖💛💙期待hxd的支持哈🎉 🎉 🎉题目链接138. 复制带随机指针的链表 - 力扣(LeetCode) (leetcode-cn.com)题目简介思路先连要复制的点在原链表上,再把random正确链接,再解除与原链表的连接并还原原链表。/** * Definition for a Node. * struct Node { * int val...原创 2022-04-01 18:35:47 · 976 阅读 · 5 评论 -
用栈实现队列.leetcode232 《数据结构入门到精通N10》
目录题目链接题目简介思路代码作者新建立的社区:非科班转码社区-CSDN社区云💖💛💙期待hxd的支持哈🎉 🎉 🎉题目链接232. 用栈实现队列 - 力扣(LeetCode) (leetcode-cn.com)题目简介思路//还是两个栈互相倒//思路:当要入数据的时候就往s1入,出的时候,就从s2出,如果s2没有数据,就要去往s1拿//一定要是s2没有数据的时候才往s1拿。当拿的时候发现s2没有数据,再一次性全部把s1的//数据.原创 2022-03-29 20:00:00 · 612 阅读 · 3 评论 -
用队列实现栈.leetcode225 《数据结构入门到精通N9》
目录题目链接题目描述思路代码作者新建立的社区:非科班转码社区-CSDN社区云💖💛💙期待hxd的支持哈🎉 🎉 🎉题目链接225. 用队列实现栈 - 力扣(LeetCode) (leetcode-cn.com)题目描述思路//栈是后进先出队列是先进后出//用两个队列来回倒//思路:把数据入到一个有数据的队列,出的时候把前n-1个数据倒到另一个队列//然后留下来的数据再出出去就可以了,就这样一直来回倒。代码...原创 2022-03-29 18:00:00 · 860 阅读 · 2 评论 -
有效的括号.leetcode20 《数据结构入门到精通N8》
目录题目链接题目描述思路代码作者新建立的社区:非科班转码社区-CSDN社区云💖💛💙期待hxd的支持哈🎉 🎉 🎉题目链接20. 有效的括号 - 力扣(LeetCode) (leetcode-cn.com)题目描述思路用栈来解决这个问题。当为左括号时,入栈,为右括号时出栈,同时注意括号的个数是否匹配,如左括号多余右括号,或者右括号多余左括号的情况。(注意因为是用c语言来实现,所以我们还要单独来实现一个栈)代码#include &..原创 2022-03-27 11:53:59 · 1702 阅读 · 21 评论 -
合并两个链表.leetcode21 《数据结构入门到精通N7》
作者新建立的社区:https://bbs.csdn.net/forums/FKBZM?typeId=22226💖💛💙期待hxd的支持哈🎉 🎉 🎉https://leetcode-cn.com/problems/merge-two-sorted-lists/思路(如下图):谁小放谁前面,但是记得用next保存下一个位置。struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list...原创 2022-03-22 20:31:11 · 462 阅读 · 0 评论 -
链表中倒数第k个结点(牛客)《数据结构入门到精通N6》
作者新建立的社区:https://bbs.csdn.net/forums/FKBZM?typeId=22226💖💛💙期待hxd的支持哈🎉 🎉 🎉https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=2&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking思路:.原创 2022-03-22 20:32:42 · 342 阅读 · 4 评论 -
链表的中间节点.leetcode876 《数据结构入门到精通N5》
作者新建立的社区:https://bbs.csdn.net/forums/FKBZM?typeId=22226💖💛💙期待hxd的支持哈🎉 🎉 🎉https://leetcode-cn.com/problems/middle-of-the-linked-list/思路:直接快慢指针,慢指针走一步,快指针走两步(注意基偶)。struct ListNode* middleNode(struct ListNode* head){ struct ListNode* slow=h..原创 2022-03-22 20:13:09 · 687 阅读 · 2 评论 -
反转链表.leetcode206 《数据结构入门到精通N2》
目录题目思路代码作者新建立的社区:https://bbs.csdn.net/forums/FKBZM?typeId=22226💖💛💙期待hxd的支持哈🎉 🎉 🎉题目思路反转指向,头变尾,保存下一个地址,然后一直迭代,同时更新头。代码struct ListNode* reverseList(struct ListNode* head){ if(head==NULL)//0ge return NULL; if(head->..原创 2022-03-19 21:49:55 · 536 阅读 · 14 评论 -
leetcode27移除元素.leetcode189轮转数组《C进阶百练N12》
leetcode 27int removeElement(int* nums, int numsSize, int val){ int pre=0; int cur=0; while(cur<numsSize) { if(nums[cur]!=val) { nums[pre]=nums[cur]; cur++; pre++; } ...原创 2022-03-19 21:39:21 · 401 阅读 · 4 评论 -
移除链表元素.leetcode203 《数据结构入门到精通N1》
目录题目思路代码作者新建立的社区:https://bbs.csdn.net/forums/FKBZM?typeId=22226💖💛💙期待hxd的支持哈🎉 🎉 🎉题目思路用prev,cur,next分别保存前一个节点,要删除节点,和后一个节点,然后free cur,让prev指向next。代码struct ListNode* removeElements(struct ListNode* head, int val){ if(head==NULL)原创 2022-03-19 21:32:12 · 276 阅读 · 2 评论 -
树和二叉树 (C语言)《数据结构与算法》
目录序言1.树概念及结构1.1树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构)2.二叉树概念及结构2.1概念2.2现实中的二叉树2.3数据结构中的二叉树2.4特殊的二叉树2.5 二叉树的存储结构2.6二叉树的性质2.7二叉树的存储结构2.7.1顺序存储2.7.2链式存储 3.二叉树的顺序结构及实现3.1 二叉树的顺序结构4.二叉树链式结构的实现...原创 2022-03-10 02:00:00 · 8024 阅读 · 158 评论 -
程序环境和预处理 C语言入门到入土(进阶篇)
目录序言1. 程序的翻译环境和执行环境 2. 详解编译+链接2.1 翻译环境2.2 编译本身也分为几个阶段2.3 运行环境3. 预处理详解3.1 预定义符号3.2 #define3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##3.2.5 带副作用的宏参数3.2.6 宏和函数对比3.2.7 命名约定3.3 #undef3.4 命令行定义3.5 条件编译..原创 2022-02-27 10:00:00 · 603 阅读 · 55 评论 -
C语言文件操作 C语言入门到入土(进阶篇)
目录序言1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭4. 文件的顺序读写4.1 对比一组函数:5. 文件的随机读写5.1 fseek5.2 ftell5.3 rewind6. 文本文件和二进制文件7. 文件读取结束的判定7.1 被错误使用的feof8. 文件缓冲区序言hello✨,大家好呀,这里是原来💖 💛💙,随着文章.原创 2022-02-24 16:06:52 · 1133 阅读 · 68 评论 -
一篇解自定义类型:结构体,位段,枚举,联合 C语言入门到入土(进阶篇)
目录1. 结构体1.1 结构的基础知识1.2 结构的声明1.3 特殊的声明1.4 结构的自引用1.5 结构体变量的定义和初始化1.6 结构体内存对齐1.7 修改默认对齐数1.8 结构体传参2. 位段2.2 位段的内存分配(上面图是VS2013)2.3 位段的跨平台问题2.4 位段的应用3. 枚举3.1 枚举类型的定义3.2 枚举的优点3.3 枚举的使用4. 联合(共用体)4.1 联合类型的定义4.2 联合的特点4...原创 2022-02-07 10:51:59 · 574 阅读 · 38 评论 -
动态内存管理 C语言从入门到入土(进阶篇)
目录1. 为什么存在动态内存分配2. 动态内存函数的介绍2.1 malloc和free2.2 calloc2.3 realloc3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部分3.5 对同一块动态内存多次释放3.6 动态开辟内存忘记释放(内存泄漏)4. 几个经典的笔试题4.1 题目14.2 题目24.3 题目34原创 2022-02-04 10:00:00 · 591 阅读 · 40 评论 -
冒泡排序实现快速排序qsort C语言
解释qsort函数及用c语言冒泡排序实现快速排序qsort。原创 2022-02-02 10:00:00 · 974 阅读 · 24 评论 -
通讯录(动态与静态,文件操作版)实现 w字 C语言进阶
本篇文章是用了动态和静态两种方法实现通讯录,是对于c语言学习后的使用,有动态开辟,枚举,等c语言进阶知识的穿插,和大量的c语言入门知识奠基哈,让你更加巩固c语言。原创 2022-01-28 16:59:32 · 7432 阅读 · 54 评论 -
C语言常用的字符,字符串,内存库函数的介绍及其实现( C语言从入门到入土(进阶篇))
(strlen(n)strcpy(n)strcat(n)strcmp(n),strstr,strtok,strerror,memcpy,memmove,memcmp)库函数的介绍,实现,和使用。原创 2022-01-26 10:00:00 · 906 阅读 · 34 评论 -
万字详解指针的进阶( C语言从入门到入土(进阶篇))
目录指针的进阶1. 字符指针2. 指针数组3. 数组指针3.1 数组指针的定义3.2 &数组名VS数组名3.3 数组指针的使用4. 数组参数、指针参数4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参5. 函数指针6. 函数指针数组7. 指向函数指针数组的指针8. 回调函数谁都不能阻挡你成为更优秀的人。指针的进阶1. 字符指针在指针的类型中我们知道有一种指针类型为字符指针 c...原创 2022-01-23 10:00:00 · 976 阅读 · 48 评论 -
一篇解栈和队列(0基础看)(C语言)《数据结构与算法》
目录1.栈的表示和实现1.1.栈的概念及结构1.2.栈的实现1.3. 效果展示图1.3.01 栈要实现的接口1.3.02 栈的实现1.3.03 栈的初始化1.3.04栈的销毁1.3.05. 入栈1.3.06 出栈1.3.07取栈顶数据1.3.08求有多少个数据1.4. 栈源代码test.cStack.hStack.c2.队列的表示和实现 2.1队列的概念及结构2.2队列的实现2.4. 队列的效果示...原创 2022-01-20 10:00:00 · 667 阅读 · 69 评论 -
面试C语言前你应该知道的题 尼科彻斯定理 C语言从入门到入土(进阶篇)(算法篇p10)
谁都不能阻挡你成为更优秀的人。尼科彻斯定理_牛客题霸_牛客网分析我们发现这是一个等差数列,公差为2。然后我们来复习一下等差数列求和和等比数列求和的公式。等差 等比这里我们知道a1和d和n,就用第二个公式。#include<stdio.h>int main(){ int m = 0; while(scanf...原创 2022-01-18 14:15:00 · 378 阅读 · 2 评论 -
一篇解双链表(0基础看)(C语言)《数据结构与算法》
本文是对于双链表的基本使用(0基础看&&超详解解读)及附上源代码,让大家初步了解双链表,所以就只实现双链表的增删查改,还有特定位置前插入和删除特定位置值等接口哈。原创 2022-01-15 10:00:00 · 2883 阅读 · 98 评论 -
一篇解单链表(0基础看)(C语言)《数据结构与算法》
本文是对于单链表的基本使用(0基础看&&超详解解读)及附上源代码,让大家初步了解链表,所以就只实现顺序表的增删查改,还有特定位置前插入和删除特定位置值等接口哈。原创 2022-01-11 10:26:36 · 4664 阅读 · 82 评论 -
一篇解读顺序表(0基础看)(C语言)《数据结构与算法》
本文是对于顺序表的基本使用(0基础看&&超详解解读)及附上源代码,让大家初步了解顺序表,所以就只实现顺序表的增删查改,还有特定位置前插入和删除特定值等主要常见函数哈。原创 2022-01-08 10:00:00 · 1755 阅读 · 65 评论 -
数据结构的入门了解,时间复杂度和空间复杂度你真的知道吗《数据结构与算法》
目录序言1. 数据结构前言1.1. 什么是数据结构?1.2.什么是算法?1.3.如何学好数据结构和算法2.什么是时间复杂度和空间复杂度?2.1.算法效率2.2.时间复杂度的概念2.3. 空间复杂度的概念3. 如何计算常见算法的时间复杂度?3.1. 让我们来举个栗子(重点)3.2. 时间复杂度对比(图解)4. 如何计算常见算法的空间复杂度?序言温馨提醒,想直接看正文的可以跳过本段哈。在上个月底作者终于结束了C语言的入门和深剖,对的,之前...原创 2022-01-04 10:00:00 · 1091 阅读 · 80 评论 -
C语言总结这一篇就够了(不收藏必后悔系列)
本篇文章总结了C中基本上所有的知识点:预处理 关键字 操作符 分支语句与循环语句 函数 数组 操作符 指针 指针和数组 结构体 内存管理 数据的存储(函数栈帧) 函数栈帧和可变参数列表 所以C语言收藏这一篇文章就够了!原创 2021-12-30 10:00:00 · 10790 阅读 · 140 评论 -
《C语言深度剖析》第六章 函数栈帧与可变参数列表 p1可变参数列表(完结)( C语言从入门到入土(进阶篇)
目录可变参数列表1. 求两个数据中的最大值2. 如果将参数改成char类型,求char类型变量中的最大值,代码会有问题吗?3. 结果并未受影响,可是,我们解析的时候,是按照va_arg(arg, int)来解析的,这是为什么?4. 注意事项5. 原理6. 先看看这几个宏的含义7. 原理图本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所以就直接讲作者认为的精华原创 2021-12-29 10:00:00 · 706 阅读 · 15 评论 -
《C语言深度剖析》第六章 函数栈帧与可变参数列表 p1函数栈帧(完结)( C语言从入门到入土(进阶篇)
目录函数栈帧样例代码:认识相关寄存器认识相关汇编命令讲解思路图1.main函数也是要被调用的2.main函数也是要形成栈帧结构的3. 起步4.开始调用5.形成栈帧6.释放栈帧7.释放临时拷贝,彻底释放空间总结本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所以就直接讲作者认为的精华部分哈!现在正文开始!谁都不能阻挡你成为更.原创 2021-12-28 10:58:26 · 733 阅读 · 5 评论 -
《C语言深度剖析》第五章 内存管理 p1(完结)( C语言从入门到入土(进阶篇)
目录内存管理1. 什么是动态内存2. 为什么要有动态内存3. 栈、堆和静态区4.4.1. 常见的内存错误4.1. 注意4.2. 可以用memset来初始化4.3. 内存泄漏如果程序退出了,问题还在吗?4.4. 内存开辟实际上比我们预要开辟得多,为什么?4.5. 内存释放的本质上是什么?5. C中动态内存“管理”体现在哪本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为...原创 2021-12-25 10:50:58 · 2110 阅读 · 36 评论 -
《C语言深度剖析》第四章 指针和数组 p5(完结)( C语言从入门到入土(进阶篇)
目录指针和数组1. 数组参数和指针参数1.1. 一维数组传参1.2.一级指针传参 1.3.二维数组参数和二级指针参数2.函数指针2.1. 函数指针的定义2.2.函数指针的使用2.3. (*(void (*)())0)() - 这是什么2.4. 函数指针数组2.5. 函数指针数组指针本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所...原创 2021-12-24 10:00:00 · 785 阅读 · 18 评论 -
《C语言深度剖析》第四章 指针和数组 p4 C语言从入门到入土(进阶篇)
本文主要讲述了:怎么区分指针数组和数组指针,地址的强制类型转换,指针的强制类型转换。多维数组和多级指针,二级数组,二级指针等。本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,是为了让大家能够更加深入了解C语言的魅力!原创 2021-12-21 18:36:02 · 1363 阅读 · 48 评论 -
《C语言深度剖析》第四章 指针和数组 p3 C语言从入门到入土(进阶篇)
本文主要讲述了:指针和数组的关系,以指针的形式和数组的形式访问数组,c为什么要这样设计访问方式,a和&a的区别,指针和数组的对比等哈!本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,是为了让大家能够更加深入了解C语言的魅力!原创 2021-12-21 10:00:00 · 661 阅读 · 9 评论 -
《C语言深度剖析》第四章 指针和数组 p2 C语言从入门到入土(进阶篇)
本文主要讲了:数组的概念,&a【0】和&【a】的区别,步长,数组名做为左值和右值的区别等哈。在这,指针和数组单独就都讲完了,下期开始合着讲他们的关系与比较哈。本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,是为了让大家能够更加深入了解C语言的魅力!原创 2021-12-20 10:00:00 · 721 阅读 · 21 评论