大话数据结构读书笔记

第一章

数据结构的定义:数据就够是相互直接存在一种或多种特定关系的数据元素的集合

逻辑结构:集合结构 、线性结构、树形结构、图形结构

物理结构:顺序存储结构 、链接存储结构

第二章 算法

1、算法的特性

输入、输出、有穷性、确定性和可行性

2、算法事假复杂度定义

在进行算法分析时,语句总的次数T(n)

第三章

1、线性表

定义:零个或多个数据元素的有限序列

2、线性表顺序存储结构的优缺点

优点:无须为表示表中元素之间的逻辑关系而增加额外的存储空间

可以快速低存取表中任意位置元素

缺点:插入和删除操作需要移动大量元素

当线性表长度变化较大是,难以确定存储空间的容量;

造成存储空间的碎片

3、线性表链式存储结构定义

为了表示每个数据元素ai与其直接后继数据元素ai+1直接的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外

还,还需存储一个知识其直接猴急的信息(位置)。我们把存储数据元素信息的域成为数据域,把存储直接后继位置的域

称为指针域,指针域中存储的信息称作指针或链。这两部分信息组成数据元素ai的存储映像,称为节点(node)

3.6.4头指针和头节点的异同

头指针:

1)头指针是指链表指向第一个节点的指针,若链表有头节点,则是指向头节点的指针

2)头指针具有标识的作用,所以常用头指针冠以链表的名字

3)无论链表是否为空,头指针均不为空,头指针是链表的必要元素

头节点:

1)是为了操作的统一个方便而设立的,放在第一元素的节点之前,其数据域一般无意义

2)有了头节点,对在第一元素和节点和删除第一节点,其操作与其他节点的操作就统一了

3)头节点不一定是链表的便要素

3.7单链表的读取

获取链表第i个数据的算法思路

1、申明一个节点P指向链表第一个节点,初始化j从1开始

2、当j<i时,就遍历链表,让P指针向后移动,不断指向下一个节点,j累加1;

3、若到链表末尾p为空,则说明第i个元素不存在;

4、否则查找成功,返回节点p的数据

3.12静态链表

用数组描述的链表叫做静态链表

总的来说,静态链表其实是为了没有指针的高级语言设计的一种实现单链表能力的方法

3.13循环链表

将单链表中终端节点的指针端由空指针改为指向头节点,就使整个单链表形成一个环,这种

头尾相接的单链表就称为单循环链表,简称循环链表

3.14双向链表

双向链表是在单链表的每个节点中,再设置一个指向其前驱的指针域

结尾语:不怕苦,吃苦半辈子,怕吃苦,吃苦一辈子

第四章 栈与队列

1、栈stack是限定仅在表尾进行插入和删除操作的线性表

栈的插入操作,叫做进栈,也称压栈,入栈

栈的删除操作,叫做出栈,也有叫做弹栈

4.10队列的定义

定义:队列是指允许在一端进行插入操作,而在另一端进行删除操作的线性表

队列是一种先进先出的线性表,简称FIFO

第六章 树

节点拥有的子树数称为节点的度(Degree),度为0的节点称为叶节点(Leaf)或终端节点;

度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度

是树内各结点的度的最大值

6.5二叉树的定义

二叉树 是n个结点的有限集合,该集合或者为空集,或者由一个根结点和两棵互不相交的

、分别对称为根结点的左子树和右子树的二叉树组成

6.8二叉树的遍历 重点

二叉树的遍历是指从根结点出发。按照某种次序访问二叉树中所有结点,使得每个节点被访问一次且

仅被访问一次

1、前序遍历

2、中序遍历

3、后序遍历

4、层序遍历

二叉树遍历的性质

1、已知前序遍历序列和中序遍历序列,可以唯一确定一棵二叉树

2、已知后序遍历序列和中序遍历序列,可以唯一确定一棵二叉树

注意:已知前序和后序是不能确定的

第七章 图

没有细看

第八章 查找

8.4有序表查找

8.4.1拆半查找(二分查找)重点

拆半查找技术,又称为二分查找。他的前提是线性表中的记录必须是关键码有序(通常从小到大有序)

线性表必须采用顺序存储。拆半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值

与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找

;若给定值大于中间的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功或者

失败


猜你喜欢

转载自blog.csdn.net/q357010621/article/details/79762488