- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章
1、算法基本概念
算法是指解题方案的准确而完整的描述。程序依据算法编制,但算法不等于程序,也不等于计算机方法,程序的编制不可能优于算法的设计。
算法是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。算法的基本特征包括:
(1)可行性;算法中执行的任何计算都是可以被分解为基本的可执行的操作,算法的每一步都必须是可行的
1、数据结构
数据结构是研究数据逻辑结构、存储结构以及相关运算的一门学科,主要包括三个方面内容:
(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
(3)对各种数据结构进行的运算。
数据结构中讨论以上问题的主要目的是为了提高数据的处理效率,主要包括两个方面:一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计算机存储空间。
数据结构是指相互有关联的数据元素的集合,是反映数据元素之间关系的数据元素集合的表示,包括逻辑结构和存储结构。
2、数据的逻辑结构
数据的逻辑结构包含表示数据元素的信息以及各数据元素之间的前后件关系。
根据各数据元素之间前后件关系的复杂程度,一般将数据逻辑结构分为:线性结构和非线性结构。
线性结构条件:
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
不满足线性结构条件的数据结构均称为非线性结构。
线性表、栈和队列都是常见的线性结构,而树和二叉树则属于非线性结构。
3、数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。数据的存储结构有顺序、链接、索引等。
一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻辑关系有可能不同。不管是线性结构,还是非线性结构数据,采用哪种存储结构比较好,要根据数据参与的运算具体情况具体分析。
8.1.3线性表及其顺序存储结构
线性表是具有n个数据元素的有限序列,由一组数据元素构成,其中数据元素的位置取决于其序号,元素之间的相对位置是线性的。如:一个N维向量、矩阵。
1、线性表的结构特征
一个非空线性表:a1,a2,……an,具有以下特征:
(1)有且只有一个根结点a1,它无前件;
(2)有且只有一个终端结点an,它无后件;
(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。
结点个数n称为线性表的长度,当n=0时,称为空表。
线性表的基本运算包括查找、插入和删除元素等操作。
2、线性表的顺序存储结构
顺序存储结构通过元素的相对存储地址来表示元素之间的逻辑关系。
线性表的顺序存储结构具有以下两个基本特点:
(1)线性表中所有元素的所占的存储空间是连续的;
(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
线性表中逻辑上相邻的元素的物理位置必定紧邻,所以根据线性表的第一个元素地址,就可以直接计算出任意一个元素的存储地址,ai的存储地址ADR(ai)计算公式为:
ADR(ai)=ADR(a1)+(i-1)k
其中ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。
由于可以随机定位,所以线性表顺序存储是一种随机存取的存储结构。
3、线性表的顺序存储结构优缺点
线性表的顺序存储结构的优点是可随机存取元素,适合频繁访问元素的情况。
线性表的顺序存储结构的缺点:
(1)在插入和删除时,需移动大量元素;
在线性表中插入或删除一个元素时,需要平均移动表的一半元素,需要移动的元素个数与该元素的位置有关。在长度为n的顺序表中插入一个元素的时间复杂度为O(n),删除一个元素的时间复杂度为O(n)。
(2)元素个数不确定时,必须预先分配较大的空间;
(3)一旦定义,表的容量难以扩充。
所以,线性表的顺序存储结构不适合对线性表频繁执行插入和删除元素的情况。
8.1.4线性表的链式存储结构—线性链表
1、线性链表
如果需要对线性表元素频繁执行插入和删除操作,此时应采用线性表的链式存储结构。线性表的链式存储结构称为线性链表,是指用一组任意的存储单元(可以连续,也可以不连续)存储线性表中的数据元素,因此,链表中结点的逻辑次序和物理次序不一定相同,如下图8.1所示。
head→ a b c d ^ 图8.1
上图中,head称为头指针,head=NULL(或0)时,该链表称为空表。
2、链表结点
在链式存储结构中,数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点,为了能正确表示数据元素间的逻辑关系,对于每个数据元素不仅要表示它的具体内容,还要附加一个表示它的直接后继元素存储位置的信息,这个信息称为指针(pointer)或链(link)。这两部分组
文档评论(0)