1. C语言中的数据结构.md

C语言内建数据结构类型##

整型##

整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型。他们都是最基本的方式来组织的数据结构,一般是几位bytes,首个bit也许是符号位,剩下的(从大小端)读出来作为数值。

浮点型##
指针型##

[========]

C语言聚合数据结构类型##

数组##
数组名字##

数组名字在两种情况下是作为非第一个成员的指针常量,这里的两个情况是取数组名的地址:这是取数组的地址,不是取第一个成员的地址,第二个情况是sizeof的操作,这个操作是计算这个数组的总大小,而不是第一个成员的。
PS:指针的加法运算是需要按照指针指向的数据类型来递加。

下标引用和间接访问对比##
作为实参传递和作为形参声明##
初始化##
长度计算##
结构体##
联合##
枚举##
链表##

链表是许多更加高级的数据结构的基础,链表是一串链条似的结构体节点通过指针的方式链接起来,链表有分为单向链表和双向链表。
链表有个一个head node,有一个cursor。这个链表最大的问题在于每次检索node或者node里面的具体member,都是从head node开始逐一retrieve的。

初始化##
索引##
插入和追加##

单向链表:

  1. 对于链表的插入,一种方式是采用常规的pervious/next node points的方式来breakup,再手拉手牵起来。
  2. 另一种方式是巧妙的使用指向指针的指针来实现,非常巧妙,以遇到指针的指针的时候要特别注意,在**linkp传递过来之后,*linkp只是一个新产生的临时变量
    双向链表:
    一种是规则串联的双向链表,还有无法规则串联起来(混乱的)双向链表。
    "Pointers on C"这本书对于链表的讲解不是很详细,书中提到的的链表需要注意的是链表尾部需要及时判断,需要插入的书在链表头或者尾该怎么处理。
修改##
删除##
排序和销毁##

真正理解这个概念可以参考Linux开发基础篇,这个在Linux里面是重要基础知识
[========]

[========]

C语言抽象数据结构##

栈##
队列##

常用的是队列,这个在网络编程中常常用作收发包buffer的实现。实现队列的方式主要有静态数组,动态数组和链表,尤其是以链表为常用。

树##
图##

[========]

数据属性##

这是一好的数据结构,这离得人们都说这个数据结构是好的。

每走一步,都是新的开始!
原文地址:https://www.cnblogs.com/shafei/p/5407933.html