【C1】数据结构实现基础

【C1】数据结构实现基础

啦啦啦,澜子又要开始瞎鼓捣啦。最近觉得数据结构好有意思,所以想要整理一个系列,方便自己后续复习,也可以便利大噶。虽然很菜,一直不停滴在写BUG(划重点),就是那种 只有你想不到的BUG,没有我写不出的BUG(心累脸) 。可能写得有点乱七八糟,但是还是想要整理整理,还是那句话,不对的地方一定告诉我,一起改进,然后也很希望能和大噶共同分享啦。

后续系列博客都是基于陈越老师主编的《数据结构》一书。本篇博客的主要内容有:

  • 数据结构的基本介绍
  • 基本C/C++语法
  • 简单的应用实例:求无序数组中位数的两种实现

引子

抽象出针对基本统计要求的数据类型

  • 类型名称
  • 数据对象集
  • 操作集

数据存储基础

数组

  • 一维数组定义
    • 类型名 数组名[数组长度]
  • 一维数组引用
    • 数组名[下标]
  • 数组初始化
    • 类型名 数组名[数组长度] = {初值表}
  • 二维数组定义
    • 类型名 数组名[行长度][列长度]
  • 二维数组应用
    • 数组名[行下标][列下标]

指针

  • 指针定义
    • 类型名 *指针变量名
  • 指针用于存放变量的地址,定义指针变量时,需注意
    • 给出指针变量名
    • 说明指针变量所指向的内存空间存放的数据类型
    • 指针变量应该先赋值,后使用
  • 指针的基本使用
    • 指针的基本运算
    • 指针与数组
    • 用指针实现内存动态分配
    • P.S: 动态存储分配函数void *malloc(unsigned size):在内存的动态存储区中分配一连续空间,其长度为size,若申请成功,则返回一个指向所分配内存空间的内存其实地址;若申请内存空间不成功,则返回NULL(值为0)。该函数的返回值为(void *)类型,在具体使用中,需要将 **malloc的返回值转换到特定指针类型,并赋给一个指针变量

结构

  • 结构定义的一般形式
struct 结构名
{
   
    类型名 结构成员名1;
    类型名 结构成员名2;
    ...
    类型名 结构成员名n;
};
  • 定义结构体变量的方式:先定义一个结构类型,再定义一个具有这种结构类型的嵌套
    • struct 结构名 结构变量名表;
  • 结构变量的使用
    • 结构变量名.结构成员名
  • 结构指针
    • `(* 结构指针变量名).结构成员名
    • 结构指针变量名->结构成员名

链表[详见陈越老师《数据结构》第二章C2]

链表是一种常见而重要的基础数据结构,其不按照线性顺序存储数据,而是由若干个同一结构类型的结点一次串接而成。主要掌握链表的建立,插入,删除,遍历。

  • 单向链表
  • 双向链表
  • 循环链表

类型定义—typedef

利用typedef来建立基本数据类型的别名可使程序具有更好的可读性和移植性

  • 定义形式
    • typedef 原有类型名 新类型名

流程控制基础

分支控制

  • if else
  • switch

循环控制

  • for语句
  • while语句
  • do while语句

函数与递归 [详见应用实例]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值