zoukankan      html  css  js  c++  java
  • 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的实现。实现队列的方式主要有静态数组,动态数组和链表,尤其是以链表为常用。

    树##
    图##

    [========]

    数据属性##

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

    每走一步,都是新的开始!
  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/shafei/p/5407933.html
Copyright © 2011-2022 走看看