数据结构笔记(郝斌主讲)(9月21日更新)

教材-课外书籍推荐

高一凡(伪算法→真代码)

数据结构概述
 定义
  我们如何把现实生活中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法

数据结构 = 个体 + 个体的关系
  算法 = 对存储数据的操作

算法
  解题的方法和步骤

衡量算法的标准
   1.时间复杂度
    大概程序要执行的次数,而非执行的时间
   2.空间复杂度
    算法执行过程中大概所占用的最大内存
   3.难易程度

4.健壮性

数据结构的地位
  数据结构是软件中最核心的课程

程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言

最后编辑于2015年8月18日23:10:06

预备知识
  指针
   指针的重要性:
    指针是C语言的灵魂
   定义
    地址
     地址就是内存单元的编号
     从0开始的非负整数
     范围: 0--FFFFFFFF(0——4G-1)

指针:
     指针就是地址,地址就是指针
     指针变量是存放内存单元地址的变量
     指针的本质是一个操作受限的非负整数

分类:
    1.基本类型的指针

2.指针和数组的关系

最后编辑于2015年8月19日23:06:51

结构体
  为什么会出现结构体
   为了表示一些复杂的数据,而普通的基本类型变量无法满足要求

什么叫结构体
   结构体是用户根据实际需要自己定义的复合数据类型

如何使用结构体
   两种方式
   struct Student  st = {1000, "zhangsan", 20};
 
   struct Student * pst;

1.
    st.sid
   2.
    pst->sid
    pst所指向的结构体变量中的sid这个成员

注意事项
   结构体变量不能加减乘除,但可以相互赋值
   普通结构体变量和结构体指针变量作为函数传参的问题

跨函数使用内存---通过动态内存分配实现
 一般情况下,自定义函数结束后内存释放,唯有动态分配的内存在没有遇见free函数的情况下,自定义函数结束了,但内存仍然存在。

最后编辑于2015年8月20日23:00:44

模块一:线性结构[把所有的结点用一根直线穿起来]
连续存储[数组]
1. 什么叫数组
元素类型相同,大小相同
2. 数组的优缺点

离散存储[链表]
定义:
n个结点离散分配
彼此通过指针相连
每个节点只有一个前驱节点,每个节点只有一个后续节点
首节点没有前驱结点,尾节点没有后续节点

专业术语:
首节点:
第一个有效节点
尾节点:
最后一个有效节点
头结点:
头结点是数据类型和首结点类型一样
第一个有效节点之前的那个节点
头结点并不存放有效数据
加头结点的目的主要是为了方便对链表的操作
头指针:
指向头结点的指针变量
尾指针:
指向尾节点的指针变量

如果希望通过一个函数对链表进行处理,我们至少需要接受链表的哪些信息:
只需要一个参数:头指针
因为我们通过头指针可以推算出链表的其他所有信息

分类:
单链表
双链表:
每一个节点有两个指针域

循环链表
能通过任何一个节点找到其他所有的结点
非循环链表
算法:
遍历
查找
清空
销毁
求长度
排序
删除节点
插入节点
算法:
狭义的算法是与数据的存储方式密切相关
广义的算法是与数据的存储方式无关
泛型:
利用某种技术达到的效果就是:不同的存储方式,执行的操作是一样的

链表排序算法

 1 for(i=0,p=pHead->pNext; i<len-1; ++i,p=p->pNext)
 2     {
 3         for(j=i+1,q=p->pNext; j<len; ++j,q=q->pNext)
 4         {
 5             if(p->data >  q->data)//类似于数组中的 a[i] > a[j]
 6             {
 7                 t = p->data;//类似于数组中的:t = a[i];
 8                 p->data = q->data;//类似于数组中的:a[i] = a[j];
 9                 q->data = t;//类似于数组中的 a[j] = t;
10             }
11         }
12     }

链表的优缺点:

线性结构的两种常见应用之一 栈

线性结构的两种常见应用之二 队列

时间: 2024-07-28 20:23:09

数据结构笔记(郝斌主讲)(9月21日更新)的相关文章

数据结构笔记(郝斌主讲)(8月21日更新)

教材-课外书籍推荐 高一凡(伪算法→真代码) 数据结构概述 定义  我们如何把现实生活中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法 数据结构 = 个体 + 个体的关系  算法 = 对存储数据的操作 算法  解题的方法和步骤 衡量算法的标准   1.时间复杂度    大概程序要执行的次数,而非执行的时间    2.空间复杂度    算法执行过程中

数据结构笔记(郝斌主讲)(2015-11-8 00:57:45更新)

教材-课外书籍推荐 高一凡(伪算法→真代码) 数据结构概述 定义  我们如何把现实生活中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法 数据结构 = 个体 + 个体的关系  算法 = 对存储数据的操作 算法  解题的方法和步骤 衡量算法的标准   1.时间复杂度    大概程序要执行的次数,而非执行的时间    2.空间复杂度    算法执行过程中

APICloud SDK_v1.0.71版本发布(2014年11月21日更新)

APICloud SDK_v1.0.71为开发APICloud App提供了一套完整的开发工具包,包括APICloudAppLoader,APICloud IDE,APICloud Framework,APICloudSamples.开发者使用这些工具可以开发APICloudApp,并同步输出iOS(.ipa)和Android(.apk)应用.另外,开发人员可以使用APICloudIDE进行应用开发,使用APICloud Simulator进行调试,使APICloud AppLoader进行真机

最新JavaScript、Ajax典藏级学习资料下载分类汇总 (2011年12月21日更新)

其他网站开发相关资料            超强HTML和xhtml,CSS精品学习资料下载汇总                                               最新html5以及css3资源下载汇总                                               Dreamweaver 教程汇总 索引: JavaScript初学者及参考必备 Javascript高级进阶 AJAX (Asynchronous JavaScript and

2016年7月21日学习笔记

2016年7月21日学习笔记 Linux安装以后出现的文件目录的作用: 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等,可用cat.less.more.vi.emacs来察看内容,用mv来改名. 目录文件:包括文件名.子目录名及其指针.它是LINUX储存文件名的唯一地方,可用ls列出目录文件. 连接文件:是指向同一索引节点的那些目录条目.用ls来查看是,连

linux七周三次课(3月21日)笔记

七周三次课(3月21日)10.11 Linux网络相关10.12 firewalld和netfilter10.13 netfilter5表5链介绍10.14 iptables语法 扩展(selinux了解即可) selinux教程 http://os.51cto.com/art/201209/355490.htm2.selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK 10.11 Linux网络相关 运行命令ifconfig查看网卡,如果没有这个命令,要安

6月21日 bc总结

6月21日 bc总结 最近bc由于急于提交,增加了WA的概率,今天1001数据没测完全就提交了,WA了一次,很不划算,在bc等于罚时10min,下次一定要确保数据正确且所有的情况都考虑到再提交. 1001 水题,5分钟WA了一次,6分钟过.手速还是慢了,重点是居然WA了一次. 1002 给定一个数组,多次询问L和R区间内的逆序数. 数组大小是小于1000. 暴力FST了. 思路:设dp(l,r)为区间 l 到 r 的逆序数.dp(l,r)=dp(l,r-1)+cnt(l,r),其中cnt(l,r

Python 学习日志9月21日

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "Helvetica Neue"; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "Hel

Linux运维学习-2——2016年7月21日

格式说明: 操作 概念 命令 说明及举例 二 internet 因特网ethernet 以太网ctrl+alt+F1 图形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 关机 reboot 重启 chvt 1-6 切换终端 init 3 关闭图形界面 init 5 打开图形界面 cp 复制 pwd 显示当前目录 lsblk 列出硬盘信息 id -u mg 查看用户ID,root为9,其他为普通用户,不加