郝斌数据结构视频教程

  • 名称:郝斌数据结构视频教程
  • 分类:数据库  
  • 观看人数:加载中
  • 时间:2017/8/8 8:35:32

          郝斌老师数据结构视频教程共78集,是由郝斌老师根据多年的教学经验来录制,分享自己的心得。
郝斌数据结构简介
第一部分 数据结构概述
  一、定义(研究是数据结构的存储和数据的操作的)
    如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫做算法。
郝斌数据结构课程截图
数据结构 = 个体的存储(从某个角度而言,可忽略) + 个体与个体之间关系的存储(核心)
算法 = 对存储数据的操作   二、算法
解题的方法和步骤 衡量算法的标准
1.时间复杂度
郝斌数据结构讲解视频
大概程序要执行的次数,而非执行的时间
2.空间复杂度
算法执行过程中大概所占用的最大内存
 3.难易程度(即可读性)  4.健壮性
  三、数据结构的地位
     数据结构是软件中最核心的内容
  程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言 第二部分 预备知识   一、指针
指针的重要性:指针是C语言的灵魂 定义
  地址:内存单元的编号          从零开始的非负整数
         范围:0--FFFFFFFF(即0--4G-1)    指针:      指针就是地址,地址就是指针      指针变量是存放内存单元地址的变量
   
 
指针的本质是一个操作受限的非负整数(只能进行减运算)
   分类:
1.基本类型的指针 2.指针和一维数组的关系
  二、结构体
 为什么会出现结构体
 为了表示一些复杂的数据,而普通的基本类型变量无法满足要求  什么叫结构体
 结构体是用户根据实际需要自己定义的数据类型  如何使用结构体    两种方式:
        struct Student st = {1000, "zhangsan", 20}        struct Student * pst = &st;    1.st.sid    2.pst->sid
     pst所指向的结构体变量中的sid这个成员注意事项
   结构体变量不能加减乘除,但可以相互赋值    普通结构体变量和结构体指针变量作为函数传参问题   三、动态内存的分配和释放
 假设动态构造一个int型的一位数组  int  len;
 int * pArr = (int *)malloc (sizeof(int) * len);
 ①本语句分配了两块内存,一块内存是动态分配的,总共len个字节;另一块是静态分配的,是pArr变量本身所占的内存,总共4个字节。  ②malloc只有一个int型的形参,表示要求系统分配的字节数
 ③malloc函数的功能是请求系统分配len个字节的内存空间,如果分配成功,则返回第一个字节的地址,如果分配不成功,则返回NULL
 ④malloc函数能且只能返回第一个字节的地址,所以我们需要把这个无任何实际意义的第一个字节的地址(俗称干地址)转化为一个有实际意义的地址,因此,malloc函数前面必须加强制类型转换(数据类型 *),表示把这个无实际意义的第一个字节的地址转化为相应类型的地址。  ⑤free(* pArr)
 表示把pArr所指向的内存给释放掉
 pArr本身的内存是静态的,不能有程序员手动释放,只能在pArr变量所在的函数运行终止时有系统自动释放  ⑥跨函数使用内存
静态内存不可以跨函数使用:
静态内存在函数执行期间可以被其它函数使用 静态内存在函数执行完毕之后就不能在被其它函数使用