C
深入浅出C语言学习及其他C语言实现资源
baby_hua
人生之路漫漫兮 吾将上下而求索
展开
-
算法入门Bu1:排序
算法入门(BuBuBu)相关数据结构:栈 队列 链表 树 并差集 堆 图等;相关算法:排序 枚举 深度和广度优先搜索 图的遍历 图中最短路径算法 最小生成树算法 割点和割遍算法 二分图的最大匹配算法等;排序算法简单的桶排序特点:如果需要排序n个数,数的范围是0-m,可以使用一个1维数组a[m+1],记录0-m这m+1个数出现的次数,可以看做是m+1个桶,各自装了对应数出...原创 2020-03-01 21:34:40 · 327 阅读 · 0 评论 -
算法精讲-1_1:介绍性内容和指针操作
该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!算法精讲-1_1:介绍性内容和指针操作 第一部分:介绍性内容,指针操作、递归、算法分析; 第二部分:引用基本的数据结构,链表、栈、队列、集合、哈希表、树、堆、优先级队列以及图; 第三部分:引入解决问题的常用算法,排序、查找、数值分析、数...原创 2017-08-23 18:15:28 · 335 阅读 · 0 评论 -
排序算法-快速排序
快速排序:算法思想: 快速排序,是一种交换排序,一趟排序会将要排序的数据分割成两个独立的部分:分割点左边的都比分割点处的值小,分割点右边的都比分割点处的值大;然后按照此方法对两个部分的数据分别进行快速排序,最终达到整个数据变成有序序列; 算法分析: 平均时间复杂度:O(n*lgn);(数据随机分布,排序性能好) 最坏时间复杂度:O(n^2);(数据有...原创 2019-03-13 11:57:25 · 224 阅读 · 0 评论 -
排序算法-冒泡排序
冒泡排序:算法思想: 冒泡排序,是一种交换排序,一趟排序会遍历要排序的序列,依次比较连续的两个元素:如果他们的顺序不满足要求则将他们交换;每趟排序结束后将符合要求的最大/最小值“浮”到数据数列的最后,就像冒泡一样; 算法分析: 平均时间复杂度:O(n^2); 最坏时间复杂度:O(n^2); 最好情况的时间复杂度:O(n); ...原创 2019-03-13 16:09:14 · 246 阅读 · 0 评论 -
简单排序算法之插入排序、选择排序和冒泡排序
倒也不是临时起意,被问了冒泡排序,我竟然……忘了,好吧,时隔多年重见冒泡,好久不见 甚是想念;于是乎就写了下代码,顺便重温了两个简单的排序算法:插入排序和选择排序;作为一个开头,之后有机会就把其它相关排序也总结下,不得不说,真的好生疏/(ㄒoㄒ)/~~ 简单排序算法之插入排序、选择排序和冒泡排序插入排序:插入排序是从无序区里依次拿到元素放到有序区里合适的位置;选择排序;...原创 2017-12-15 11:59:51 · 539 阅读 · 0 评论 -
C代码实现:操作循环链表按规则移除结点
一组顺序数字 1~10,依123 123 循环数数,每遇到3的位置移除该位置数,重新123继续数; 直至剩余一个数,问该数是多少? 同事提起的一个问题,思考之后使用C语言实现了下,代码如下: #include <stdlib.h>#include <stdio.h>//定义一个数据结构 用于创建链表的结点typedef struct lis...原创 2017-12-22 11:49:14 · 250 阅读 · 0 评论 -
C语言(Head First C)-9_2:静态库与动态库:动态库
9_2:静态库与动态库:动态库 场景: 丈量长度的仪器值数显示,在不同的国家显示不同的语言和单位,比如在中国可以用米meter,在英国可以用英尺feet; 假设有两种不同的仪器,一种测量比较大的物体,一种测量比较小的物体;分别叫machinesmall,machinebig; 我们为每种仪器编写自己的软件,使其可以显示测得的数据;原创 2017-09-12 09:46:38 · 415 阅读 · 0 评论 -
C语言(Head First C)-9_1:静态库与动态库:静态库
9_1:静态库与动态库:静态库 我们已经见识过标准库的威力了,现在是时候在代码中发挥这种威力了; 本章内容: 创建自己的库,并在多个程序中复用相同代码; 通过动态库在运行时共享代码; 基于此,我们可以写出易于扩展并可以有效管理的代码; 场景: 还记得之前我们使用过一个加密的函数encrypt();原创 2017-09-11 11:09:45 · 718 阅读 · 0 评论 -
C语言(Head First C)-8:高级函数:函数指针 qsort() 可变参数函数
8:高级函数:函数指针 qsort() 可变参数函数 基本函数很好用,但有时需要更多功能; 本章学习: 如何把函数作为参数传递,从而提高代码的智商; 学会使用比较器函数排序; 使用可变参数让代码伸缩自如; 场景: 过滤某个字符串数组中的数据; 首先用字符串函数过滤数组: (Co原创 2017-09-06 18:27:02 · 1368 阅读 · 0 评论 -
C语言(Head First C)-7:数据结构与动态存储
7:数据结构与动态存储: 一个结构根本不够! 本章内容: 1)如何用结构指针吧自定义数据类型连接成复杂的大型数据结构;通过创建链表探索其中的基本原理; 2)通过在堆上动态分配空间来学习如何让数据结构处理可变数量的数据,并在完成后释放空间;(如果嫌清理麻烦,可以学习一下使用valgrind) 保存可变数量的数据: 为了保存原创 2017-09-05 13:50:49 · 707 阅读 · 0 评论 -
C语言(Head First C)-6_2:结构、联合与位字段:结构更新、联合、枚举和位字段
6_2:结构、联合与位字段:结构更新、联合、枚举和位字段 如何更新结构: 结构就是把一组绑在一起的变量当做一条数据处理;我们已经学会了创建结构对象,并使用点表示法访问结构的值,那么怎么修改结构中已经存在的某个值呢? 我们可以像修改变量一样修改字段:structname.name = xxx; (Code6_1)/* * */#include原创 2017-09-04 16:07:32 · 455 阅读 · 0 评论 -
C语言(Head First C)-6_1:结构、联合与位字段:创建自己的结构
6_1:结构、联合与位字段:创建自己的结构 目前为止,我们接触了C语言的基本数据类型;但如果想表示数字,文本以外的其他东西,或为现实世界中的事物建立模型,就显得力不从心了; 结构将帮助创建自己的结构,模拟错综复杂的事物; 我们将学习: 如何把基本数据类型组成结构 以及 用联合处理生活的不确定性;如果想简单的模拟Y/N,可以用位字段;原创 2017-08-28 16:35:48 · 420 阅读 · 0 评论 -
C语言(Head First C)-5_3:使用多个源文件:make自动化构建工具
5_3 使用多个源文件: 保留目标代码、链接目标文件,用make工具自动化构建 创建大程序: 我们已经学到了把程序分解成独立的源文件,不仅意味着可以在不同程序之间共享代码,还意味着可以开始建立真正的大程序; 把程序分解成更小的自洽代码片段,比起在一个庞大的源文件中搞定一切,现在你可以有很多更简单的文件,他们更容易理解、维护和测试; 使用多个源原创 2017-08-25 17:01:06 · 1196 阅读 · 0 评论 -
C语言(Head First C)-5_2:使用多个源文件:共享函数和共享变量
5_2 使用多个源文件:链接多个源文件,共享函数、共享变量; 保留字/关键字: C语言是一种很小的语言,所有的保留字和关键字如下: auto if break int case long char register continue return default short do原创 2017-08-23 09:40:22 · 4253 阅读 · 0 评论 -
C语言(Head First C)-5_1:使用多个源文件:数据类型和使用头文件声明函数
5_1 使用多个源文件: 大程序不等于大源文件: 只有一个源文件的话,维护耗时且困难;如何把源文件分解为易于管理的小模块,然后合成一个大程序,正是本章的内容; 同时还将了解数据类型的更多细节,并结识一个新朋友make; 数据类型: C语言可以处理不同的数据类型:字符、整数、浮点数(分为普通浮点数和科学计算用的高精度浮点数); 浮点型:fl原创 2017-08-15 17:46:33 · 1217 阅读 · 0 评论 -
C语言(Head First C)-4_3:创建小工具:命令行选项
前文《 C语言(Head First C)-4_2:创建小工具:做一件事并把它做好》 4_3 命令行选项: 十个程序有九个需要选项;聊天程序有“系统设置”;游戏有调整难度的选项;而命令行工具需要有命令行选项; 命令行选项是一些小开关,他们经常出现在命令行中; 如: ps -ae //显示所有进程,包括后台运行的进程; 由库代原创 2017-08-10 16:34:57 · 993 阅读 · 0 评论 -
C语言(Head First C)-4_2:创建小工具:管道和自定义数据流
前文《 C语言(Head First C)-4_1:创建小工具:做一件事并把它做好》 4_2 创建小工具 承接前文,我们要求场景: 对于之前的示例,我们要求显示符合条件的数据,比如latitude大于15 小于20;该怎么做? 一个任务对应一个工具: 我们应该在创建一个工具来完成这件事;一个filterlocation工具,过滤了范原创 2017-08-08 15:31:44 · 604 阅读 · 0 评论 -
C语言(Head First C)-4_1:创建小工具:标准输入输出和重定向
4_1 创建小工具 创建小工具:做一件事并把它做好 操作系统都有小工具,C语言小工具执行特定的小任务,如读写文件,过滤数据; 完成复杂工作,可以使用多个工具; 如何构建小工具? 接下来我们学习创建小工具的基本要素并学会控制命令行选项、操纵信息流、重定向,快速建立自己的小工具; 有如下场景:我们传入了地图的GPS数据,但是现有原创 2017-08-07 21:51:47 · 799 阅读 · 0 评论 -
C语言(Head First C)-3:字符串
3_1 字符串:字符串原理 字符串不只是用来读取的: C中的字符串其实就是char数组;那字符串能用来干嘛? 该String.h出场了: String.h是C标准库中的一员;负责处理字符串;如果想要连接、比较或复制字符串,String.h中的函数就可以派上用处; 先看一个目标: -创建字符串数组,并使用strstr()函数搜索字原创 2017-08-04 19:31:42 · 583 阅读 · 0 评论 -
C语言(Head First C)-2_2:存储器和指针
2 存储器和指针:指向何方? 前文《C语言(Head First C)-2_1:存储器和指针》scanf()与fgets(): scanf()会导致缓冲区溢出: 如果忘记限制scanf()读取字符串的长度,可能会输入远远超出程序空间的数据,多余的数据会写到计算机还没有分配好的存储器中;(运气好的话,不但能保存,而且不会有问题。)原创 2017-08-03 16:31:32 · 490 阅读 · 2 评论 -
C语言(Head First C)-2_1:存储器和指针
2 存储器和指针:指向何方? 要理解C语言,就需要理解C语言是如何操作存储器的; C语言可以使用存储器赋予你更多的掌控权; C代码包含指针: 指针就是存储器中某条数据的地址; 之所以使用指针是因为: 1)在函数调用时,可以只传递一个指针,而不用传递整份数据;(他会告诉你函数所在地址) 2)让两段代码处理同一条数据,而原创 2017-08-01 17:10:05 · 785 阅读 · 0 评论 -
C语言(Head First C)-1:C语言入门
本文旨在重识C语言,可能没有那么完成和深入,他可能不是一扇门,但作为一扇窗他已经够了,哈哈……你需要在电脑上安装的编译器: gcc:GNU编译器套装;Unix的话已经带了,Mac 下载Xcode开发工具即可; 1 C语言入门:进入C语言的世界 C语言用来创建空间小、速度快的程序:抽象层次更低,用C语言写的代码更接近于机器语言;原创 2017-07-30 10:46:44 · 1930 阅读 · 0 评论