数据结构(C语言)考试重点必背
《数据结构(c语言版)》重点知识汇总

v 数据结构知识点概括第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。
·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。
·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。
定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。
相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。
算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O (n^k)、指数阶O(2^n)。
c语言必考知识点

以下是C语言考试中的一些必考知识点:
1. 数据类型:包括整型、浮点型、字符型等数据类型,以及它们的范围和存储方式。
2. 变量和常量:如何声明、定义和使用变量,常量的使用方法。
3. 运算符:包括算术运算符、关系运算符、逻辑运算符等,以及它们的优先级和结合性。
4. 控制结构:包括条件语句(if-else语句、switch语句)、循环语句(for循环、while循环、do-while循环)以及跳转语句(break语句、continue语句)等。
5. 数组:如何声明、定义和使用数组,多维数组的操作。
6. 函数:如何声明、定义和调用函数,函数的参数传递方式(值传递、引用传递)。
7. 字符串处理:字符串的定义和初始化,字符串的输入输出,字符串的操作(比较、连接、复制等)。
8. 指针:指针的定义和初始化,指针的运算,指针与数组的关系。
9. 结构体和联合体:结构体的定义和使用,结构体成员的访问,联合体的定义和使用。
10. 文件操作:文件的打开、读写和关闭,文件指针的操作。
以上是C语言考试中的一些必考知识点,建议你结合教材和练习题进行系统地学习和复习。
在备考过程中,多做一些相关的编程练习和实践,加深对知识点的理解和掌握。
数据结构必考知识点总结

数据结构必考知识点总结在准备考试时,了解数据结构的基本概念和相关算法是非常重要的。
以下是一些数据结构的必考知识点总结:1. 基本概念数据结构的基本概念是非常重要的,包括数据、数据元素、数据项、数据对象、数据类型、抽象数据类型等的概念。
了解这些概念有助于更好地理解数据结构的本质和作用。
2. 线性表线性表是数据结构中最基本的一种,它包括顺序表和链表两种实现方式。
顺序表是将数据元素存放在一块连续的存储空间内,而链表是将数据元素存放在若干个节点中,每个节点包含数据和指向下一个节点的指针。
了解线性表的概念和基本操作是非常重要的。
3. 栈和队列栈和队列是两种特殊的线性表,它们分别具有后进先出和先进先出的特性。
栈和队列的实现方式有多种,包括数组和链表。
掌握栈和队列的基本操作和应用是数据结构的基本内容之一。
4. 树结构树是一种非线性的数据结构,它包括二叉树、多路树、二叉搜索树等多种形式。
了解树的基本定义和遍历算法是必考的知识点。
5. 图结构图是一种非线性的数据结构,它包括有向图和无向图两种形式。
了解图的基本概念和相关算法是非常重要的,包括图的存储方式、遍历算法、最短路径算法等。
6. 排序算法排序是一个非常重要的算法问题,掌握各种排序算法的原理和实现方式是必不可少的。
常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。
7. 查找算法查找是另一个重要的算法问题,包括顺序查找、二分查找、哈希查找、树查找等。
了解各种查找算法的原理和实现方式是必考的知识点之一。
8. 算法复杂度分析算法的时间复杂度和空间复杂度是评价算法性能的重要指标,掌握复杂度分析的方法和技巧是非常重要的。
9. 抽象数据类型ADT是数据结构的一种概念模型,它包括数据的定义和基本操作的描述。
了解ADT的概念和实现方式是非常重要的。
10. 动态存储管理动态存储管理是数据结构中一个重要的问题,包括内存分配、内存释放、内存回收等。
了解动态存储管理的基本原理和实现方式是必考的知识点之一。
数据结构 (严蔚敏C语言版) 学习、复习提纲

期末复习 第一章 绪论 复习1、计算机算法必须具备输入、输出、可行性、确定性、有穷性5个特性。
2、算法分析的两个主要方面是空间复杂度和时间复杂度。
3、数据元素是数据的基本单位。
4、数据项是数据的最小单位。
5、数据结构是带结构的数据元素的集合。
6、数据的存储结构包括顺序、链接、散列和索引四种基本类型。
数据结构算 法数据:计算机处理的信息总称数据项:最小单位 数据元素:最基本单位数据对象:元素集合数据结构:相互之间存在一种或多种特定关系的数据元素集合。
概念:数据元素之间的关系 线性结构:一对一非线性结构 树:一对多 图:多对多顺序存储结构 链表存储结构 索引。
散列。
算法描述:指令的有限有序序列有穷性 确定性 可行性 输入 输出 时间复杂度 空间复杂度第二章 线性表 复习1、在双链表中,每个结点有两个指针域,包括一个指向前驱结点的指针 、一个指向后继结点的指针2、线性表采用顺序存储,必须占用一片连续的存储单元3、线性表采用链式存储,便于进行插入和删除操作4、线性表采用顺序存储和链式存储优缺点比较。
5、简单算法第三章 栈和队列 复习定义逻辑关系:前趋 后继节省空间 随机存取 插、删效率低 插入 删除1、 栈和队列的异同点。
2、 栈和队列的基本运算3、 出栈和出队4、 基本运算第四章 串 复习存储结构栈的概念:在一端操作的线性表 运算算法栈的特点:先进后出 LIFO初始化 进栈push 出栈pop顺序队列 循环队列队列概念:在两端操作的线性表 假溢出链队列队列特点:先进先出 FIFO基本运算顺序:链队:队空:front=rear队满:front=(rear+1)%MAXSIZE队空:rear 初始化 判空 进队 出队取队首元素第五章 数组和广义表 复习定义:由n(≥1)个字符组成的有限序列 S=”c 1c 2c 3 ……cn ”串长度、空白串、空串。
紧缩格式 非紧缩格式以字节为单位的存储格式 (C 语言用数组或指针表示) 基本运算strlen(s) 串长度 strcat(s1,s2) 联接 strcmp(s1,s2) 比较 strcpy(s1,s2) 复制 strstr(s1,s2) 子串查询模式匹配失败链接值匹配算法单字符链表串 多字符链表串串变量的存储映像:串名、串值对应关系表顺序存储方式压缩存储方式行优先顺序存放列优先顺序存放C语言数组:行优先下标从[0]开始,公式变化稀疏矩阵应用表达式程序调用广义表定义:n(≥0)个元素的有限序列表头:Head(A)= a1概念:长度、深度、原子、子表表尾:Tail(A)=(a2,a3,…,a n)表结点特殊矩阵对称矩阵三角矩阵对角矩阵三元组存储:三元组m n t链表存储:十字链表原子结点第六章 树 复习1、三个结点可以组成2种不同形态的树。
数据结构(C语言版)复习要点(含专业术语解释)

一、概念【以下二十个词是概念的考试范围】数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:是数据的根本单位,在计算机程序中通常作为一个整体进展考虑和处理数据构造:是互相之间存在一个或多种特定关系的数据元素的集合。
线性表:最常用最简单的一种数据构造,一个线性表是n个数据元素的有限序列队列:是一种先进先出的线性表,它只允许在表的一端进展插入,而另一端删除元素串:由零个或多个字符组成的有限序列完全二叉树:深度为K的,有N个节点的二叉树,当且仅当其没一个结点都与深度为K的满二叉树中编号从1至N的结点一一对应时。
图:多个结点,结点间的关系可以是任意的,图中任意两个元素之间都有可能相关入度:以顶点V为头的弧的数目称为V的入度出度:以V为尾的弧的数目称为V的入度拓扑排序:由某个集合上的一个偏序得到集合上的一个全序的操作二叉排序树:或者是空树,或者是符合以下性质的二叉树1、假设它的左子树不空,那么左子树上所有结点均小于它的根结点值。
2、假设它的右子树不空,那么右子树上所有结点均大于它的根结点值3、它的左右子树也分别是二叉排序树循环链表:是另一种形式的链式存储构造。
它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环栈:是限定仅在表尾进展插入或删除操作的线性表二叉树:是一种树型的构造,它的特点是每个结点至多只有两棵子树,且有左右之分,不可任意颠倒满二叉树一颗深度为K且有2的K次方减1个结点的二叉树查找表:是由同一类型的数据元素构成的集合静态查找表:查询某个特定的数据元素是否在查找表中,检索某个特定的数据元素的各种属性。
动态查找表:在查找过程中同时插入查找不存在的数据元素,或者从查找表中删除已存在的某个数据元素排序:是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个关键字的有序序列。
关键字:是数据元素中某个数据项的值,用它可以识别一个数据元素二、算法总体要求:1、要求写算法的题,能写出完好、正确的算法语句总分值;写出主要算法、不完好的也有分;实在不会算法,能用文字明晰描绘的也有分;一个字不写,空白当然没分。
数据结构C语言版复习资料

数据结构C语言版复习资料2一、选择题1.以下数据结构中哪一个是非线性结构?( B )A. 队列B. 二叉树C. 栈D. 线性表2.设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( B )。
A. 5,6,3,4,1,2 C. 3,1,2,6,5,4B. 3,2,5,6,4,1 D. 1,5,4,6,2,33.设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是( C )。
A. N0=N1+1B. N0=Nl+N2C. N0=N2+1D. N0=2N1+l4.设某棵二叉树中有1000个结点,则该二叉树的最小高度为( B )。
A.9 B. 10 C. 11 D. 125、在一棵具有4层的满二叉树中结点总数为(A )。
A. 15B. 16C. 17D. 326、设一棵二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树先序遍历序列为(D )。
A. adbceB. decabC. debacD. abcde7.设有8个结点的无向图,该图至少应有( C )条边才能确保是一个连通图。
A. 5B. 6C. 7D. 88.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为( C )。
A. n,eB. 2n,eC. n,2eD. e,n9.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点b出发进行深度优先遍历可以得到的一种顶点序列为( A )。
A. bacfdeB. becfadC. bacedfD. beafdc二、填空题1.数据元素之间的逻辑结构有四种基本类型,分别是集合、线性、树形结构和网状结构。
2.数据元素之间的存储结构有两种基本类型,分别是顺序存储结构和 链式存储结构 。
3.设输入序列是1、2、3、……、n ,经过栈的作用后输出序列的第一个元素是n ,则输出序列中第i 个输出元素是 n-i+1 。
数据结构(c语言版)复习知识点

第一章绪论1.1数据、数据元素、数据项、数据结构等基本概念1.数据(data):客观事物的符号表示,在计算机科学中指所有能输入计算机中并被计算机处理的符号总称。
整数、浮点数、字符串、声音、图像。
2.数据元素(dataelement):数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
3.一个数据元素可能由若干个数据项(dataitem)组成。
数据元素是一个数据整体中相对独立的单位。
但它还可以分割成若干个具有不同属性的项(字段)。
故不是组成数据的最小单位。
数据项是构成数据的最小单位。
4.数据对象(dataobject):性质相同的数据元素的集合,是数据的一个子集。
5.数据结构(datastructure):数据元素以及数据元素之间存在的关系。
6.数据结构主要描述:数据元素之间的逻辑关系、数据在计算机系统中的存储方式和数据的运算,即数据的逻辑结构、存储结构和数据的操作集合1.2数据结构的逻辑结构、存储结构的含义及其相互关系1.数据的逻辑结构:用形式化方式描述数据元素间的关系。
数据的逻辑结构独立于计算机,是数据本身所固有的。
用于算法的设计。
两大类逻辑结构:线性结构(线性表、栈、队列、数组和串),非线性结构(树和图)。
2.数据的物理结构(也称存储结构):数据在计算机中的具体表示。
包括数据元素的表示和关系的表示。
存储结构是逻辑结构在计算机存贮器中的映像,必须依赖于计算机。
用于算法的实现。
数据的存储方式可分为如下两类:顺序存储、链接存储。
1.3算法1.算法的定义:算法是对特定问题求解步骤的一种描述,是指令的有限序列。
2.算法的特性:有穷性——算法必须在执行有穷步之后结束,而且每一步都可在有穷时间内完成确定性——每条指令无二义性。
并且,相同的输入只能得到相同的输出;可行性——算法中描述的每一操作,都可以通过已实现的基本运算来实现。
输入——算法有零至多个输入。
输出——算法有一个至多个输出3.算法效率的度量:时间复杂度和空间复杂度及计算。
c语言公共基础重点(精华)

第一章数据结构与算法详细重点学习知识点:1.算法的概念、算法时间复杂度及空间复杂度的概念2.数据结构的定义、数据逻辑结构及物理结构的定义3.栈的定义及其运算、线性链表的存储方式4.树与二叉树的概念、二叉树的基本性质、完全二叉树的概念、二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。
(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。
一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。
考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。
1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
这表明使用绝对的时间单位衡量算法的效率是不合适的。
撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依赖于问题的规模(通常用整数n表示),它是问题规模的函数。
即算法的工作量=f(n)2.算法的空间复杂度算法的空间复杂度是指执行这个算法所需要的内存空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:绪论1、1:数据结构课程得任务就是:讨论数据得各种逻辑结构、在计算机中得存储结构以及各种操作得算法设计。
1、2:数据:就是客观描述事物得数字、字符以及所有得能输入到计算机中并能被计算机接收得各种集合得统称。
数据元素:表示一个事物得一组数据称作就是一个数据元素,就是数据得基本单位。
数据项:就是数据元素中有独立含义得、不可分割得最小标识单位。
数据结构概念包含三个方面:数据得逻辑结构、数据得存储结构得数据得操作。
1、3数据得逻辑结构指数据元素之间得逻辑关系,用一个数据元素得集合定义在此集合上得若干关系来表示,数据结构可以分为三种:线性结构、树结构与图。
1、4:数据元素及其关系在计算机中得存储表示称为数据得存储结构,也称为物理结构。
数据得存储结构基本形式有两种:顺序存储结构与链式存储结构。
2、1:算法:一个算法就是一个有穷规则得集合,其规则确定一个解决某一特定类型问题得操作序列。
算法规则需满足以下五个特性:输入——算法有零个或多个输入数据。
输出——算法有一个或多个输出数据,与输入数据有某种特定关系。
有穷性——算法必须在执行又穷步之后结束。
确定性——算法得每个步骤必须含义明确,无二义性。
可行性——算法得每步操作必须就是基本得,它们得原则上都能够精确地进行,用笔与纸做有穷次就可以完成。
有穷性与可行性就是算法最重要得两个特征。
2、2:算法与数据结构:算法建立数据结构之上,对数据结构得操作需用算法来描述。
算法设计依赖数据得逻辑结构,算法实现依赖数据结构得存储结构。
2、3:算法得设计应满足五个目标:正确性:算法应确切得满足应用问题得需求,这就是算法设计得基本目标。
健壮性:即使输入数据不合适,算法也能做出适当得处理,不会导致不可控结高时间效率:算法得执行时间越短,时间效率越高。
果。
高空间效率:算法执行时占用得存储空间越少,空间效率越高。
可读性:算法得可读性有利于人们对算法得理解。
2、4:度量算法得时间效率,时间复杂度,(课本39页)。
2、5:递归定义:即用一个概念本身直接或间接地定义它自己。
递归定义有两个条件:至少有一条初始定义就是非递归得,如1!=1、由已知函数值逐步递推计算出未知函数值,如用(n-1)!定义n!。
第二章:线性表1、1线性表:线性表就是由n(n>=0)个类型相同得数据元素a0,a1,a2,…an-1,组成得有限序列,记作:LinearList = (a0,a1,a2,…an-1)其中,元素ai可以就是整数、浮点数、字符、也可以就是对象。
n就是线性表得元素个数,成为线性表长度。
若n=0,则LinearList为空表。
若n>0,则a0没有前驱元素,an-1没有后继元素,ai(0<i<n-1)有且仅有一个直接前驱元素ai-1与一个直接后继元素ai+1。
1、2线性表得顺序存储就是用一组连续得内存单元依次存放线性表得数据元素,元素在内存得物理存储次序与它们在线性表中得逻辑次序相同。
线性表得数据元素数据同一种数据类型,设每个元素占用c字节,a0得存储地址为Loc(a0),则ai得存储地址Loc(ai)为:Loc(ai) = Loc(a0)+ i*c数组就是顺序存储得随机存储结构,它占用一组连续得存储单元,通过下标识别元素,元素地址就是下标得线性函数。
1、3:顺序表得插入与删除操作要移动数据元素。
平均移动次数就是属数据表长度得一半。
(课本第50页)1、4:线性表得链式存储就是用若干地址分散得存储单元存储数据元素,逻辑上相邻得数据元素在物理位置上不一定相邻,必须采用附加信息表示数据元素之间得顺序关系。
它有两个域组成:数据域与地址域。
通常成为节点。
(课本第55页及56页)1、5单链表(课本56页)单链表得遍历:Node<E> p = head; while(p!=null){ 访问p节点;p = p、next;}单链表得插入与删除操作非常简便,只要改变节点间得链接关系,不需移动数据元素。
单链表得插入操作:1):空表插入/头插入 2)中间插入/尾插入if(head == null) Node<E> q = new Node<E>(x);{ head = new Node<E>(x); q、next = p、next;}else{ p、next = q;Node<E> q=new Node<E>(x); 中间插入或尾插入都不会改变单表q、next = head; 得头指针head。
head = q;}单链表得删除操作:头删除:head = head、next;中间/尾删除:if(p、next!=null){ p、next = p、next、next;}循环单链表:如果单链表最后一个节点得next链保存单链表得头指针head值,则该单链表成为环形结构,称为循环单链表。
(课本67)若rear就是单链表得尾指针,则执行(rear、next=head;)语句,使单链表成为一条循环单链表。
当head、next==head时,循环单链表为空。
1、6:双链表结构:双链表得每个结点有两个链域,分别指向它得前驱与后继结点,当head、next==null时,双链表为空。
设p指向双链表中非两端得某个结点,则成立下列关系:p=p、next、prev=p、prev、next。
双链表得插入与删除:1)插入 2)删除q=new DLinkNode(x); p、prev、next = p、next;q、prev=p、prev;q、next =p; if(p、next=null){p、prev、next = q;p、prev=q; (p、next)、prev = p、prev;}循环双链表:当head、next==head且head、prev==head时,循环双链表为空。
第三章:栈与队列1、1栈:栈就是一种特殊得线性表,其中插入与删除操作只允许在线性表得一端进行。
允许操作得一端称为栈顶,不允许操作得一端称为栈底。
栈有顺序栈与链式栈。
栈中插入元素得操作称为入栈,删除元素得操作称为出栈。
没有元素得中称为空栈。
栈得进出栈顺序:后进先出,先进后出。
(及75页得思考题)。
1、2:队列:队列就是一种特殊得线性表,其中插入与删除操作分别在线性表得两端进行。
向队列中插入元素得过程称为入队,删除元素得过程称为出对,允许入队得一端称为队尾,允许出队得一端称为对头。
没有元素得队列称为空队列。
队列就是先进先出。
第四章:串1、1:串就是一种特殊得线性表,其特殊性在于线性表中得每个元素就是一个字符。
一个串记为:s=“s0s1s2…sn-1” 其中n>=0,s就是串名,一对双引号括起来得字符序列s0s1s2…sn-1就是串值,si(i=0,1,2,…n-1)为特定字符集合中得一个字符。
一个串中包含得字符个数称为串得长度。
长度为0得串称为空串,记作“”,而由一个或多个空格字符构成得字符串称为空格串。
子串:由串s中任意连续字符组成得一个子序列sub称为s得子串,s称为sub得主串。
子串得序号就是指该子串得第一个字符在主串中得序号。
串比较:两个串可比较就是否相等,也可比较大小。
两个串(子串)相等得充要条件就是两个串(子串)得长度相同,并且各对应位置上得字符也相同。
两个串得大小由对应位置得第一个不同字符得大小决定,字符比较次序就是从头开始依次向后。
当两个串长度不等而对应位置得字符都相同时,较长得串定义为较“大”。
第五章:数组与广义表1、1:数组就是一种数据结构,数据元素具有相同得数据类型。
一维数组得逻辑结构就是线性表,多维数组就是线性表得扩展。
1、2:一维数组:一维数组采用顺序存储结构。
一个一维数组占用一组连续得存储单元。
设数组第一个元素a0得存储地址为Loc(a0),每个元素占用c字节,则数组其她元素ai得存储地址Loc(ai)为: Loc(ai)= Loc(a0)+i*c数组通过下标识别元素,元素地址就是下标得线性函数。
一个下标能够唯一确定一个元素,所划给得时间就是O(1)。
因此数组就是随机存取结构,这就是数组最大得优点。
1、3:多维数组得遍历:有两种次序:行主序与列主序。
行主序:以行为主序,按行递增访问数组元素,访问完第i行得所有元素之后再访问第i+1行得元素,同一行上按列递增访问数组元素。
a00,a01,…a0(n-1), a10,a11,…a1(n-1),…a(m-1)0,a(m-1)1,…,a(m-1)(n-1)2)列主序:以列为主序,按列递增访问数组元素,访问完第j列得所有元素之后再访问第j+1列得元素,同一列上按列递增访问数组元素。
多维数组得存储结构:多维数组也就是由多个一维数组组合而成,组合方式有一下两种。
静态多维数组得顺序存储结构:可按行主序与列主序进行顺序存储。
按行主序存储时,元素aij得地址为:Loc(aij)= Loc(a00)+(i*n+j)*c按列主序存储时,Loc(aij)= Loc(a00)+(j*m+i)*c动态多维数组得存储结构。
二维数组元素地址就就是两个下标得线性函数。
无论采用哪种存储结构,多维数组都就是基于一维数组得,因此也只能进行赋值、取值两种存取操作,不能进行插入,删除操作。
第六章:树就是数据元素(结点)之间具有层次关系得非线性结构。
在树结构中,除根以外得结点只有一个直接前驱结点,可以有零至多个直接后继结点。
根没有前驱结点。
树就是由n(n>=0)个结点组成得有限集合(树中元素通常称为结点)。
N=0得树称为空树;n>0大得树T;@有一个特殊得结点称为根结点,它只有后继结点,没有前驱结点。
@除根结点之外得其她结点分为m(m>=0)个互不相交得集合T0,T1,T3……、、,Tm-1,其中每个集合Ti(0<=i<m)本身又就是一棵树,称为根得子树。
树就是递归定义得。
结点就是树大得基本单位,若干个结点组成一棵子树,若干棵互不相交得子树组成一棵树。
树得每个结点都就是该树中某一棵子树得根。
因此,树就是由结点组成得、结点之间具有层次关系大得非线性结构。
结点得前驱结点称为其父母结点,反之,结点大得后继结点称为其孩子结点。
一棵树中,只有根结点没有父母结点,其她结点有且仅有一个父母结点。
拥有同一个父母结点得多个结点之间称为兄弟结点。
结点得祖先就是指从根结点到其父母结点所经过大得所有结点。
结点得后代就是指该结点得所有孩子结点,以及孩子得孩子等。
结点得度就是结点所拥有子树得棵数。
度为0得结点称为叶子结点,又叫终端结点;树中除叶子结点之外得其她结点称为分支结点,又叫非叶子结点或非终端结点。
树得度就是指树中各结点度得最大值。
结点得层次属性反应结点处于树中得层次位置。
约定根结点得层次为1,其她结点得层次就是其父母结点得层次加1。