1 数据结构与算法

发布 2021-05-02 17:04:28 阅读 4532

第一章数据结构与算法。

1.1算法。

算法:是指解题方****而完整的描述。1

算法特征:1)可行性;

2)确定性:每个步骤必须有明确定义,不能模棱两可;

3)有穷性:在有限个步骤后终止;

4)拥有足够的情报:

算法的基本要素:

1)对数据对象的运算和操作::包括算术运算;逻辑运算;关系运算;数据传输。

2)算法的控制结构:算法中各操作之间的执行顺序。包括顺序;选择;循环。

常用工具:传统流程图、n-s图、算法描述语言。

算法设计的基本方法:

1)列举法:列举所有可能;

2)归纳法:列举少量可能,经分析,找出一般规律;

3)递推法:从已知条件出发,逐步找结果;

4)递归法:将问题逐层分解,再沿分解的逆过程逐步综合。

自己调用自己叫直接递归;通过别人调用自己叫间接递归调用。

5)减半递推技术:问题规模减半,性质不变。

算法复杂度:4

1)时间复杂度:执行算法所需要的计算工作量。

2)空间复杂度:执行这个算法所需要的内存空间。2

1.2数据结构的基本概念。

数据结构研究的三个方面:

1)数据的逻辑结构:数据元素之间的逻辑关系。

2)数据的存储结构(物理结构):逻辑结构在计算机中的存放形式。1 常用的有顺序、链接、索引。2

3)对各种数据结构进行的运算。

逻辑结构与存储结构的关系:一种数据的逻辑结构根据需要可以表示成多种存储结构,而采用不同的存储结构,其数据处理的效率是不同的。2

数据结构:相互有关联的数据元素的集合。

数据结构的表示方法:(1)图形;(2)二元关系。

逻辑结构的两要素:(1)数据元素集合(d) (2)d上的关系(r)

线性结构条件: (1)有且只有一个根结点;

2)每一个结点最多有一个前件,也最多有一个后件。

非线性结构条件:不满足线性结构条件的数据结构。

1.3线性表及其顺序存储结构。

线性表:由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置。

是线性的。非空线性表的结构特征:

1)且只有一个根结点a ,它无前件;

2)有且只有一个终端点a ,它无后件;

3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。

线性表的长度:结点个数n(当n=0时,称为空表)。

线性表的顺序存储结构的两个基本特点:

1)所有元素的存储空间是连续的;

2)所有元素在存储空间中是按逻辑顺序依次存放的。

顺序表(注意:专指顺序存储的线性表)的基本操作:

1)插入:在n个长的顺序表中第i个元素前插入一个元素,需要移动n-i+1个元素,表长变为n+1。

2)删除:在n个长的顺序表中删除第i个元素,需要移动n-i个元素,表长变为n-1。

1.4栈和队列。

栈:限定在一端进行插入与删除的线性表。

允许插入与删除的一端称为栈顶(top),不允许插入与删除的另一端称为栈底(bottom)。2

栈是“先进后出”3(filo)、“后进先出”(lifo)的线性表。4

栈具有记忆作用。1

栈的基本运算:

1)入栈运算:在栈顶插入一个元素。

2)退栈运算:删除栈顶元素。

3)读栈顶元素:将栈顶元素赋给某个变量。

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

允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。

队列是“先进先出”(fifo)或“后进后出”(lilo)的线性表。

队列的基本运算:

1)入队运算:从队尾插入一个元素;

2)退队运算:从队头删除一个元素。

1.5线性链表。

线性表的链式存储结构称为线性链表。3

数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。

结点由两部分组成:

1)用于存储据元素值,称为数据域;

2)用于存放指针,称为指针域,用于指向前一个或后一个结点。

链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。1

链式存储方式即可用于表示线性结构,也可用于表示非线性结构。

线性链表的基本运算:查找、插入、删除。

循环链表的特点:

1)增加了一个头结点。

2)链表中最后一个结点指向头结点。

循环链表中所有的结点连成一个环状链,只要指出表中的任意一个结点就能找出其他所有结点。循环链表实现了空表和非空表的统一。

1.6树与二叉树。

树是一种简单的非线性结构,所有元素之间具有明显的层次特性。

树中结点的度:结点后件的个数。度为0的结点称为叶子。

树的度:树中度最大的结点的度。

树的深度:树的层数。

二叉树:度为2的树。

二叉树的基本性质:

1)在二叉树的第k层上,最多有个结点;2

2)深度为m的二叉树最多有个结点;3

3)度为0的结点(即叶子结点)总是比度为2的结点多一个;1

4)具有n个结点的二叉树,其深度至少为;

5)具有n个结点的完全二叉树的深度为;

满二叉树:除最后一层外,每一层上的所有结点有两个子结点,则k层上有n 个结点深度为m的满二叉树有2 -1个结点。

完全二叉树:除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。

二叉树一般采用链式存储结构,但特别的对于满二叉树与完全二叉树可以按层序进行顺序存储。

二叉树的遍历:

1)前序遍历(dlr),首先访问根结点,然后遍历左子树,最后遍历右子树;

2)中序遍历(ldr),首先遍历左子树,然后访问根结点,最后遍历右子树;4

3)后序遍历(lrd),首先遍历左子树,然后访问遍历右子树,最后访问根结点。3

1.7查找技术。

顺序查找对于长度为n的有序线性表,最坏情况只需比较n次。4

二分法查找只适用于顺序存储的有序表,2对于长度为n的有序线性表,最坏情况只需比较次。1

1.8排序技术。

交换类排序法:(1)冒泡排序法,需要比较的次数为;3

特点:相邻数据元素交换。

2)快速排序法。一般情况;最坏情况为1。

插入类排序法:(1)简单插入排序法,最坏情况需要次比较;

特点:将元素依次插入到表中。

2)希尔排序法,最坏情况需要次比较。

特点:将无序序列分隔成若干小的子序列进行插入排序。

选择类排序法:(1)简单选择排序法,最坏情况需要n(n-1)/2次比较;

特点:找到最小的排到表的最前面。

2)堆排序法,最坏情况需要次比较。

2 (5) 数据结构分为逻辑结构和存储结构,循环队列属于 【5】 结构。

1算法与数据结构

算法与数据结构综合应用。数值计算问题 1 打印所有的 水仙花数 所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数字本身,例如 2 一个数如果恰好等于它的因子之和,这个数就称为 完数 例如 6的因子为 而6 1 2 3,因此6是 完数 编程序找出1000以内的所有完数。3 已知四位数3025有...

算法与数据结构 1 1

第1章 1.3.2 p7 环路复杂度。1.3.3 p9 10 时间复杂度的计算,大o记号 p22 9 第2章 2.2.2 p31 地址计算公式 p49 4 2.2.3 p32 矩阵压缩。2.3.3 p41 模式匹配改进算法next函数值的计算 p50 18 第3章 3.3 p69 栈的考察 p90 ...

考点1数据结构与算法

1 答案 d 解析 算法是指解题方 而完整的描述,算法既不等于程序,也不等于计算方法,因此a 错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构,因此b 和c 错误。2 答案 a 解析 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。算法的有穷性是指算法程序的...