C语言数据结构学习笔记

这几天开始了对数据结构的学习,内容较多较杂,理解起来也颇为困难,故记录下学习中的笔记

什么是数据结构

数据结构是一门研究数据之间关系和操作 的学科,而非计算方法

数据结构的基本概念

  • 数据:所有能够输入到计算机中去描述失误的符号
  • 数据项:有独立含义的数据最小单位,也叫域
  • 数据元素:数据的基本单位也叫节点、记录
  • 数据结构:数据元素和数据关系的集合
  • 算法: 数据结构所具备的功能,解决特定问题的方法

数据结构的三个方面

  • 数据的逻辑结构
  • 数据的存储结构
  • 数据结构的运算

逻辑结构和存储结构
集合:数据元素同属于一个集体,但元素之间没有任何关系
线性结构:数据元素之间存在一对一关系
树形结构:数据元素之间存在一对多关系(倒悬树)
图型结构:数据元素之间存在多对多关系(地铁图)
数据的物理结构
顺序结构:数据元素存储在连续的内存中,用数据元素的相对位置来表示关系
优点:能够随机访问(想访问那个就访问那个) 访问效率极高(速度快)
缺点:空间利用率低,对内存要求比较高,插入、删除不方便
链式结构:数据元素存储在彼此独立的内存空间中,每个独立的元素也叫节点,每个数据元素中增加一个数据项用于存储其他元素的地址,用来表示元素之间的关系
优点:插入删除非常方便,空间利用率高
缺点:不能随机访问(只能由前到后逐个访问)

逻辑结构和物理结构的对应关系
表 顺序 链式
树 链式 顺序
图 顺序+链式
每种逻辑结构采用什么物理结构存储并没有明确的规定,通常根据实际的难易程度以及空间、时间方面的要求,来选择最合适的物理存储结构,也有可能采用多种物理结构复合存储

数据结构的和运算
1 建立数据结构 create
2 销毁数据结构 destory
3 清空数据结构 clean
4 数据结构排序 sort
5 删除元素 delete
6 插入元素 insert
7 访问元素 access
8 修改元素 modify
9 查询元素 query
10遍历数据结构 ergodic (show printf)

顺序表和链式表的实现

  • 顺序表:

    • 数据项
      1存储的内存首地址
      2表的容量
      3元素的数量
      
    • 运算:
        创建 销毁 清空 插入 删除 访问 修改 查询 排序 遍历
        注意
        	1 越界问题(不要越界)
        	2 要保持元素的连续性
      

      优点:支持随机访问,修改 查询 排序 效率高,大块连续的内存不易产生内存碎片

      缺点:对内存的要求比较高(内存连续、大块内存) 插入删除元素时不方便 且效率低

  • 链式表:

    • 元素的数据项:
      数据域:可以是各种类型的若干个数据项
      指针域:指向下一个元素
      由若干个元素通过指针域链接在一起形成链式表

    • 不带头节点:第一个元素存储的数据域就是有效的数据
      添加删除是可以修改头节点指针,参数需要使用二级指针
      同时需要获取到上一个节点的指针,而头节点没有上一个节点

    • 带头节点:第一个元素只代表头 不使用
      进行插入、删除操作时会比不带头节点的链表方便
      注意:其他操作时要从第二个节点开始

功能受限的表

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值