《大话数据结构》读书笔记

来源:互联网 发布:js金沙7726下载 编辑:程序博客网 时间:2024/06/05 04:13
7.9

数据结构是一门研究分数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等徐昂管问题的学科。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

逻辑结构:是指数据对象中数据元素之间的相互关系。集合结构、线性结构、树形结构、图形结构。

物理结构:是指数据的逻辑结构在计算机中的存储形式。顺序存储结构、链式存储结构

抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法的特性:输入输出、有穷性、确定性、可行性。

算法设计要求:正确性、可读性、健壮性、时间效率高和存储量低。

判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数

O()来体现算法时间复杂度,称为大O记法。

推导大O阶:

1.用常数1取代运行时间中的所有加法常数。

2.在修改后的运行次数函数中,只保留最高阶项。

3.如果最高阶项存在且不是1,则去除与这个项相乘的常数。

得到的结果就是大O阶。

线性表:零个或多个数据元素的有限序列。

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

注意“数组的长度”和“线性表的长度”的区分。

线性表的顺序存储结构在存、读数据时,时间复杂度为O(1);插入或删除时O(n)

 

线性表的链式存储。

单链表;

静态链表:用数组描述的链表,还叫游标实现法;

循环链表;

双向链表;


栈:时限定仅在表尾进行插入和删除操作的线性表,把允许插入和删除的一端称为栈顶,另一端称为栈底。栈又称为后进先出的线性表,简称LIFO结构。

如果栈的使用过程中元素变化不可预料,有时很小,有时非常大,那么最好是用链栈,反之,如果它的变化在可控范围内,建议使用顺序栈会更好一些。

栈的一个很重要的应用:在程序设计语言中实现了递归。

后缀表达式(逆波兰式):“9+(3-1)*3+10\2”—>9 3 1 - 3 * + 10 2 / +

队列:是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。先进先出的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为对头。

循环队列

串:是由零个或多个字符串组成的有限序列,又名叫字符串。

子串的定位操作通常称作串的模式匹配。

KMP模式匹配算法:P135

 

0 0
原创粉丝点击