数据结构1——概述及预备知识

数据结构概述

  • 定义:
    • 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构(个体和个体关系)保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找/删除某个元素、排序等)而执行的相应操作,这个相应的操作也叫算法。
    • 数据机构 = 个体 + 个体关系
    • 算法 = 对存储数据的操作

算法

  • 解题的方法和步骤。
  • 衡量算法的标准:
    • 1.时间复杂度
      • 大概程序要执行的次数,而非执行的时间(因为不同机器执行时间不一样)
    • 2.空间复杂度
      • 算法执行过程中大概所占用的最大内存
    • 3.难易程度
    • 4.健壮性

预备知识

  • 指针
    • 引入概念:地址

      • 定义:内存单元的编号,从0开始的非负整数。
      • CPU能够直接访问内存,CPU与内存靠三根线连接,地址线(确定单元编号)、控制线(控制是写入还是输出)和数据线(数据传输)
    • 指针就是地址,指针变量是存放内存单元地址的变量。

    • 指针本质就是一个操作受限的非负整数。

    • 指针的分类:

      • 基本类型的指针
      • 指针和数组的关系
    • 指针案例:

      • 如何通过被调函数修改主调函数的中局部变量的值(传参:存放该局部变量的指针变量&+变量名;接收参数:传递参数的变量类型的地址值数据,eg:int * i);
      • 如何通过被调函数修改主调函数中一维数组的内容(传参:①存放数组首元素的指针变量,②存放数组长度的整型变量。tips:p[i]等同于*(p+i))。
      • 无论是什么类型的变量(包括指针变量),以&+变量名(即地址)作为实参,都可以改写变量值。

在这里插入图片描述

  • 结构体
    在这里插入图片描述在这里插入图片描述

    • 为什么会出现结构体
      • 为了表示一些复杂的数据,普通的基本类型变量无法满足要求。
    • 什么叫结构体
      • 是类的过渡,结构体即只有属性没有方法的类。
      • 用户根据实际需求自己定义的复合数据类型。
    • 如何使用结构体
      在这里插入图片描述在这里插入图片描述
    • 注意事项
      • 结构体变量不能加减乘除,但可以相互赋值;
      • 普通结构体变量和结构体指针变量作为函数传参的问题(使用指针传参有效节约内存,提升速度)。
  • 动态内存的分配和释放
    在这里插入图片描述在这里插入图片描述

学习大纲

  • 模块一:线性结构
    • 连续存储(数组)
    • 离散存储(链表)
    • 线性结构的两种常见应用之一:栈
    • 线性结构的两种常见应用之二:队列
    • 专题:递归
  • 模块二:非线性结构
  • 模块三:查找和排序
    • 折半查找
    • 排序
      • 冒泡
      • 选择
      • 插入
      • 快速排序
      • 归并排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章