1. C语言中的数据结构.md
C语言内建数据结构类型
整型
整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型。他们都是最基本的方式来组织的数据结构,一般是几位bytes,首个bit也许是符号位,剩下的(从大小端)读出来作为数值。
浮点型
指针型
[========]
C语言聚合数据结构类型
数组
数组名字
数组名字在两种情况下是作为非第一个成员的指针常量,这里的两个情况是取数组名的地址:这是取数组的地址,不是取第一个成员的地址,第二个情况是sizeof的操作,这个操作是计算这个数组的总大小,而不是第一个成员的。
PS:指针的加法运算是需要按照指针指向的数据类型来递加。
下标引用和间接访问对比
作为实参传递和作为形参声明
初始化
长度计算
结构体
联合
枚举
链表
链表是许多更加高级的数据结构的基础,链表是一串链条似的结构体节点通过指针的方式链接起来,链表有分为单向链表和双向链表。
链表有个一个head node,有一个cursor。这个链表最大的问题在于每次检索node或者node里面的具体member,都是从head node开始逐一retrieve的。
初始化
索引
插入和追加
单向链表:
- 对于链表的插入,一种方式是采用常规的pervious/next node points的方式来breakup,再手拉手牵起来。
另一种方式是巧妙的使用指向指针的指针来实现,非常巧妙,以遇到指针的指针的时候要特别注意,在
**linkp传递过来之后,*linkp只是一个新产生的临时变量
双向链表:
一种是规则串联的双向链表,还有无法规则串联起来(混乱的)双向链表。
"Pointers on C"这本书对于链表的讲解不是很详细,书中提到的的链表需要注意的是链表尾部需要及时判断,需要插入的书在链表头或者尾该怎么处理。修改
删除
排序和销毁
真正理解这个概念可以参考Linux开发基础篇,这个在Linux里面是重要基础知识
[========]
[========]
C语言抽象数据结构
栈
队列
常用的是队列,这个在网络编程中常常用作收发包buffer的实现。实现队列的方式主要有静态数组,动态数组和链表,尤其是以链表为常用。
树
图
[========]
数据属性
这是一好的数据结构,这离得人们都说这个数据结构是好的。
1. C语言中的数据结构.md的更多相关文章
- R 语言中的数据结构
基本数据类型 6种 numaric 如 12, 12.4 integer 如 2L,0L complex 包含实数和虚数 如 3+2i character 要用双引号或者单引号包括起来 如 & ...
- R语言中数据结构
R语言还是有点古老感觉,数据结构没有Python中那么好用.以下简单总结一下R语言中经常使用的几个数据结构. 向量: R中的向量能够理解为一维的数组,每一个元素的mode必须同样,能够用c(x:y)进 ...
- R语言中的几种数据结构
R语言中的几种数据结构 一 R中对象的5种基本类型 字符(character) 整数 (integer) 复数(complex) 逻辑(logical:True/False) 数值(numeric: ...
- 在C语言中利用PCRE实现正则表达式
1. PCRE简介 2. 正则表达式定义 3. PCRE正则表达式的定义 4. PCRE的函数简介 5. 使用PCRE在C语言中实现正则表达式的解析 6. PCRE函数在C语言中的使用小例子 1. P ...
- C语言中的栈和堆
原文出处<http://blog.csdn.net/xiayufeng520/article/details/45956305#t0> 栈内存由编译器分配和释放,堆内存由程序分配和释放. ...
- Python 中的数据结构总结(一)
Python 中的数据结构 “数据结构”这个词大家肯定都不陌生,高级程序语言有两个核心,一个是算法,另一个就是数据结构.不管是c语言系列中的数组.链表.树和图,还是java中的各种map,随便抽出一个 ...
- go 语言中常用的包
来自学习go语言.pdf 译者刑星 ==== fmt 包fmt实现了格式化IO函数,这与c的printf和scanf类似,格式化短语派生于c %v 默认格式的值.当打印结构时,加号(%+v)会增加字段 ...
- C语言中的回调函数(Callback Function)
1 定义和使用场合 回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数.函数是你实现 ...
- C语言中的堆与栈20160604
首先声明这里说的是C语言中的堆与栈,并不是数据结构中的!一.前言介绍:C语言程序经过编译连接后形成编译.连接后形成的二进制映像文件是静态区域由代码段和数据段(由二部分部分组成:只读数据 段,未初始化数 ...
随机推荐
- u-boot FIT image介绍_转自“蜗窝科技”
转自:http://www.wowotech.net/u-boot/fit_image_overview.html 1. 前言 Linux kernel在ARM架构中引入设备树device tree( ...
- CSS补充之--页面布局、js补充,dom补充
CSS补充之--页面布局 主站一:(下面是一个大致的模板) <div class="pg-header"> <div style="width: 120 ...
- AppSettings和connectionStrings的却别(转)
AppSettings是ASP.NET1.1时期用的,在.NET Framework 2.0中,新增了ConnectionStrings. 1.<connectionStrings> &l ...
- smb服务器命令
win +r win7下运行 //linux主机地址 sudo smbpasswd -a 用户名 添加用户和密码
- Last time, I wrote a pager, but now it seems this no longer has use, so I want to paste it here.
public class Pager<T> where T : new() { private IEnumerable<T> _all; private IEnumerable ...
- mysql时间属性之时间戳和datetime之间的转换
一.datetime转换为时间戳 方案一:强制转换字段类型 use`nec`; ; ) NOT NULL COMMENT '注册时间' , ) NULL DEFAULT NULL COMMEN ...
- javaSE基础第二篇
1.JDK下载: www.oracle.com 2.JAVA_HOME bin目录:存放可执行文件.exe 把可能变的路径写入JAVA_HOME path=......;%JAVA_HOME%%; ...
- Thread and shared lock
在看programing python 4th,第5张parallel system tool 192页开始,书中讲到thread知识,以下做个笔记,以便后期学习 1.主线程执行,开启5个子线程进行计 ...
- Java多线程开发系列之一:走进多线程
对编程语言的基础知识:分支.选择.循环.面向对象等基本概念理解后,我们需要对java高级编程有一定的学习,这里不可避免的要接触到多线程开发. 由于多线程开发整体的系统比较大,我会写一个系列的文章总结介 ...
- 对ADC(DAC)的线性度(INL和DNL)的一点理解 [转]
大家在使用ADC的时候,往往最关注位数,而对ADC的线性度往往会忽略. 其实这个线性度也是ADC非常重要的指标,ADC(或DAC,其实ADC也是由DAC组成的)线性度指标有两个: INL:翻译过来叫“ ...