数据结构复习知识点解析.docx
- 文档编号:8451850
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:38.27KB
数据结构复习知识点解析.docx
《数据结构复习知识点解析.docx》由会员分享,可在线阅读,更多相关《数据结构复习知识点解析.docx(18页珍藏版)》请在冰豆网上搜索。
数据结构复习知识点解析
第一章:
概论
知识点:
1、数据结构的基本概念:
数据、数据元素、数据项等之间的区和联系。
2、数据的逻辑结构,数据的存储结构、数据的逻辑结构和存储结构各有哪些基本类型、数据的基本逻辑结构有什么特点。
我们所学的几种常见的数据结构中(顺序表、链表、队列、栈、串、树、图等),哪些是线性数据结构,哪些是非线性数据结构?
3、算法复杂性的概念、内容和算法复杂性的计算。
简单算法复杂性的判断:
(1)sum=0;
for(i=1;i<=n;i++)sum=sum+i;
其中i=1,2,3,…,k,需频度k<=n,所以复杂性为O(n)
(2)i=1;
while(i<=n)i=i+2;
其中i=1,3,5,…,(2k-1),需2k-1<=n,则频度k<=(n+1)/2,复杂性为O(n)
(3)i=1;
while(i<=n)i=i*3;
其中i=1,3,32,…,3k,需3k<=n,则频度k<=log3n,复杂性为O(log3n)
(4)i=1;
while(i*i<=n)i++;
其中i=1,2,3,…,k,需k2<=n,则频度k<=n1/2,复杂性为O(n1/2)
习题:
1、填空题
(1)数据的逻辑结构包括:
、、、;
(2)存储结构包括:
、、、。
(3)数据结构中评价算法的两个重要指标是
(4)下面程序段中带下划线的语句的执行次数的数量级是:
i=1;while(i (5)计算机执行下面的语句时,语句s的执行次数为_______。 for(i=l;i for(j=n;j>=i;j--) s; (6)下面程序段的时间复杂度为________。 (n>1) sum=1; for(i=0;sum 2、选择题 (1)算法的计算量的大小称为计算的()。 A.效率B.复杂性C.现实性D.难度 (2)算法的时间复杂度取决于() A.问题的规模B.待处理数据的初态C.A和B (3)计算机算法指的是(),它必须具备()这三个特性。 (1)A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法 (2)A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性 C.确定性、有穷性、稳定性D.易读性、稳定性、安全性 (4)从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 (5)以下数据结构中,哪一个是线性结构()? A.广义表B.二叉树C.稀疏矩阵D.串 (6)在下面的程序段中,对x的赋值语句的频度为() for(i=1;i<=n;i++) for(j=1;j<=n;j++) x=x+1 A.O(2n)B.O(n)C.O(n2)D.O(log2n) (7)程序段 for(i=n;i>=1;i--) for(j=1;j<=n;j++) IFA[j]>A[j+1]THENA[j]与A[j+1]对换; 其中n为正整数,则最后一行的语句频度在最坏情况下是() A.O(n)B.O(nlogn)C.O(n3)D.O(n2) (8)以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 (9)连续存储设计时,存储单元的地址()。 A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续 3、问答题 (1)数据元素之间的关系在计算机中有几种表示方法? 各有什么特点? (2)数据的逻辑结构有哪些基本类型? (3)数据的存储结构由哪四种基本的存储方法实现? 第二章: 线性表 知识点: 1、线性表的基本概念和两种存储方式: 顺序存储、链式存储 2、顺序表的概念、数据结构、存储,插入、删除运算及其时间复杂度;顺序表的特点: 随机存储 3、单链表的存储、插入、删除运算特点? 是否可以随机存取? 访问、增加或者删除结点时的时间复杂度? 4、单链表中插入结点和删除结点的基本步骤? 头指针与头结点之间的根本区别,头结点与首元结点的关系? 在链表里面,引入头结点有什么作用? 5、有头结点、无头结点的单链表为空的条件分别是什么? 有头结点: L->next==NULL,无头结点: L==NULL 习题: 1、选择题 (1)下述哪一条是顺序存储结构的优点? () A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示 (2)下面关于线性表的叙述中,错误的是哪一个? () A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 (3)线性表是具有n个()的有限序列(n>0)。 A3.表元素B.字符C.数据元素D.数据项E.信息项 (4)链表不具有的特点是() A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 (5)下面的叙述不正确的是() A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B.线性表在链式存储时,查找第i个元素的时间同i的值无关 C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比 D.线性表在顺序存储时,查找第i个元素的时间同i的值无关 (6)若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。 A.O(0)B.O (1)C.O(n)D.O(n2) (7)对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。 A.O(n)O(n)B.O(n)O (1)C.O (1)O(n)D.O (1)O (1) (8)线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为() A.O(i)B.O (1)C.O(n)D.O(i-1) 2、填空 (1)当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_______存储结构。 (2)线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是________。 (3)在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动__1______个元素。 (4)在单链表中设置头结点的作用是_______。 (5)链接存储的特点是利用_______来表示数据元素之间的逻辑关系。 (6)顺序存储结构是通过_______表示元素之间的关系的;链式存储结构是通过______表示元素之间的关系的。 (7)对于双向链表,在两个结点之间插入一个新结点需修改的指针共_____个,单链表为______个。 (8)在单链表L中,指针p所指结点有后继结点的条件是: __ (9)线性结构包括______、______、_____和______。 线性表的存储结构分成_____和______。 3、应用题 (1)线性表有两种存储结构: 一是顺序表,二是链表。 试问: 如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。 在此情况下,应选用哪种存储结构? 为什么? 若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构? 为什么? (2)说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;头结点与首元结点的关系。 (3)删除顺序表中所有的正数,要求移动次数小。 搜索顺序表,对每一个正数,先不删除,而是累计当前正数个数s,于是,对每个非正数,将它一次性前移s位。 算法复杂性为O(n)。 voiddels(sqlist*L){ ints,i; s=0;//正数计数器 for(i=0;i if(L->data[i]>0s++;//累计当前正数 elseif(s>0)L->data[i-s]=l->data[i];//向前移动s位 L->n=L->n-s;//调整表长 } 还可以删除顺序表中所有的负数、字符等,主要是删除数据的条件不一样 (4)单链表算法运用,如链表合并,将两个有序表合并为一个有序表 lklistpurge(lklistA,lklistB){ pointerC,p,q,r; p=A->next;q=B->next; C=A;r=C;//取A头结点作C头结点 while(p! =NULL&&q! =NULL){ if(p->data<=q->data) {r−>next=p;r=p;p=p->next;} else{r−>next=q;r=q;q=q->next;} } if(p! =NULL)r->next=p;//A表有剩余结点 elser->next=q; deleteB;//释放B头结点 returnC; } 第三章栈、队列和串 知识点: 1、栈的定义、栈顶、栈底、运算特点(先进后出),顺序实现和链接实现及其特点,栈的应用 2、队列的概念,队头、队尾、运算特点(后进后出),顺序实现、循环队列、链队列 3、串的概念和串长的计算 习题 1、选择题 (1)对于栈操作数据的原则是()。 A.先进先出B.后进先出C.后进后出D.不分顺序 (2)栈在()中应用。 A.递归调用B.子程序调用C.表达式求值D.A,B,C (3)一个递归算法必须包括()。 A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分 (4)用链接方式存储的队列,在进行删除运算时()。 A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改 (5)用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。 A.仅修改队头指针B.仅修改队尾指针 C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改 (6)递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。 A.队列B.多维数组C.栈D.线性表 (7)栈和队列都是() A.顺序存储的线性结构B.链式存储的非线性结构 C.限制存取点的线性结构D.限制存取点的非线性结构 2、应用题 (1)名词解释: 栈、队列? (2)简述顺序存储队列的假溢出的避免方法及队列满和空的条件。 第4章多维数组和广义表 知识点: 1、多维数组的定义,对于一个多维数据,如何计算里面元素的个数? 在存储多维数组时,如果已知首元素的存储地址,如何求数组里面任意元素的存储地址? (注意,行优先、列优先、元素的长度) 2、广义表的概念、表长、深度、表头、表尾;广义表的取表头和取表尾操作;注意,取表头去的是原则取表尾得到的是表,会利用广义表的取表头和取表尾操作分离广义表的原子。 习题: 1、选择题 (1)将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为()。 供选择的答案: A.198B.195C.197 (2)设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为()。 A.i(i-l)/2+jB.j(j-l)/2+iC.j(j-l)/2+i-1D.i(i-l)/2+j-1 (3)设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为()。 A.(i-1)*n+jB.(i-1)*n+j-1C.i*(j-1)D.j*m+i-1 (4)数组A[0..4,-1..-3,5..7]中含有元素的个数()。 A.55B.45C.36D.16 (5)广义表A=(a,b,(c,d),(e,(f,g))),则下面式子的值为()。 Head(Tail(Head(Tail(Tail(A))))) A.(g)B.(d)C.cD.d (6)广义表运算式Tail(((a,b),(c,d)))的操作结果是()。 A.(c,d)B.c,dC.((c,d))D.d (7)广义表((a,b,c,d))的表头是(),表尾是()。 A.aB.()C.(a,b,c,d)D.(b,c,d) 2、填空题 (1)设广义表L=((),()),则head(L)是 (1)___;tail(L)是 (2)__;L的长度是(3)_;深度是(4)__。 (2)已知广义表A=(9,7,(8,10,(99)),12),试用求表头和表尾的操作Head()和Tail()将原子元素99从A中取出来。 (3)广义表的深度是__。 (4)广义表(a,(a,b),d,e,((i,j),k))的长度是,深度是_。 (5)已知广义表LS=(a,(b,c,d),e),运用head和tail函数取出LS中原子b的运算是_____。 (6)广义表A=(((a,b),(c,d,e))),取出A中的原子e的操作是: ___。 第五章树形结构 知识点: 1、树的概念、根、度、兄弟、路径、叶子、孩子、双亲、高度、深度、层数;根据一棵树,能够知道它的度、根节点、叶子结点、深度等;根据树中的某个结点,可以找出它的孩子结点; 2、二叉树的概念、性质和几种特殊形态的二叉树及其特点: 斜树、满二叉树、完全二叉树 3、二叉树的存储(顺序存储,适合完全二叉树;链式存储) 4、二叉树的遍历及其应用(先根、中根和后根遍历) 5、二叉树的双序列生成(先根和中根或者中根和后根生成二叉树) 6、树和森林的概念、树和森林与二叉树的相互转换方法、以及转换的二叉树的特点,树和森林的遍历 7、哈弗曼编码的概念和哈弗曼树的构造 题目 1、选择题 (1)已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为() A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE (2)设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为() A.5B.6C.7D.8 (3)在下述结论中,正确的是() ①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换; ④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A.①②③B.②③④C.②④D.①④ (4)设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是() A.m-nB.m-n-1C.n+1D.条件不足,无法确定 (5)若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是() A.9B.11C.15D.不确定 (6)在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个 A.4B.5C.6D.7 (7)设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。 与森林F对应的二叉树根结点的右子树上的结点个数是()。 A.M1B.M1+M2C.M3D.M2+M3 (8)具有10个叶结点的二叉树中有()个度为2的结点, A.8B.9C.10D.ll (9)一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A.250B.500C.254D.505E.以上答案都不对 (10)设给定权值总数有n个,其哈夫曼树的结点总数为() A.不确定B.2nC.2n+1D.2n-1 (11)有关二叉树下列说法正确的是() A.二叉树的度为2B.一棵二叉树的度可以小于2 C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为2 (12)二叉树的第I层上最多含有结点数为() A.2IB.2I-1-1C.2I-1D.2I-1 (13)一个具有1025个结点的二叉树的高h为() A.11B.10C.11至1025之间D.10至1024之间 (14)一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有()结点 A.2hB.2h-1C.2h+1D.h+1 (15)在一棵高度为k的满二叉树中,结点总数为() A.2k-1B.2kC.2k-1D.log2k+1 (16)一棵树高为K的完全二叉树至少有()个结点 A.2k–1B.2k-1–1C.2k-1D.2k (17)一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是() A.CABDEFGB.ABCDEFGC.DACEFBGD.ADCFEG (18)已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。 A.CBEFDAB.FEDCBAC.CBEDFAD.不定 (19)某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E则前序序列是: () A.E,G,F,A,C,D,BB.E,A,C,B,D,G,FC.E,A,G,C,F,B,DD.上面的都不对 (20)二叉树的先序遍历和中序遍历如下: 先序遍历: EFHIGJK;中序遍历: HFIEJKG。 该二叉树根的右子树的根是: () A、EB、F C、G D、H 2、填空题 (1)二叉树由_ (1)__,__ (2)_,_(3)__三个基本单元组成。 (2)具有256个结点的完全二叉树的深度为______。 (3)深度为k的完全二叉树至少有___ (1)___个结点,至多有___ (2)____个结点。 (4)深度为H的完全二叉树至少有_ (1)___个结点;至多有_ (2)___个结点;H和结点总数N之间的关系是(3)。 (5)假设根结点的层数为1,具有n个结点的二叉树的最大高度是____。 (6)在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0=______ (7)高度为K的完全二叉树至少有_____个叶子结点。 (8)高度为8的完全二叉树至少有_____个叶子结点。 (9)已知二叉树有50个叶子结点,则该二叉树的总结点数至少是______。 (10)层完全二叉树至少有_____个结点,拥有100个结点的完全二叉树的最大层数为______。 3、应用题 (1)树所有结点的度数之和与结点数有何关系? 与边数有何关系? 二叉树(或者树中),度为0的结点数与度不为0的结点树有何关系? (2)已知一棵二叉树的对称序和后序序列如下: 中序: GLDHBEIACJFK后序: LGHDIEBJKFCA (1)出这棵二叉树,并写出该二叉树的先序序列: (2)写出这棵二叉树的根节点、叶子节点、度为1的节点、度为2的节点 (3)转换为对应的森林: (3)从概念上讲,树,森林和二叉树是三种不同的数据结构,将树,森林转化为二叉树的基本目的是什么,并指出树和二叉树的主要区别。 (4)二叉树的遍历算法及其应用,如求叶子结点数、度为1的结点数、度为2的结点数,交换二叉树的左右子树、判断两棵二叉树是否等价等。 第6章图 知识点 1、图的概念: 有向图、无向图、完全图、连通图、强连通图、邻接点、顶点的度、出度、入度、路径 2、图的存储: 有向图和无向图的邻接矩阵存储和邻接表存储,及其特点 3、图的深度优点遍历和广度优先遍历 4、生成树、最小生成树,Prim和Kruskal算法 5、有向无环图的应用: 拓扑排序和关键路径(课件例题) 习题 1、选择题 (1)图中有关路径的定义是()。 A.由顶点和相邻顶点序偶构成的边所形成的序列B.由不同顶点所形成的序列 C.由不同边所形成的序列D.上述定义都不是 (2)设无向图的顶点个数为n,则该图最多有()条边。 A.n-1B.n(n-1)/2C.n(n+1)/2D.0E.n2 (3)一个n个顶点的连通无向图,其边的个数至少为()。 A.n-1B.nC.n+1D.nlogn; (4)要连通具有n个顶点的有向图,至少需要()条边。 A.n-lB.nC.n+lD.2n (5)n个结点的完全有向图含有边的数目( )。 A.n*nB.n(n+1)C.n/2D.n*(n-l) (6)一个有n个结点的图,最少有()个连通分量,最多有()个连通分量。 A.0B.1C.n-1D.n (7)在一个无向图中,所有顶点的度数之和等于所有边数()倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的()倍。 A.1/2B.2C.1D.4 (8)下列哪一种图的邻接矩阵是对称矩阵? () A.有向图B.无向图C.AOV网D.AOE网 (9)下列说法不正确的是()。 A.图的遍历是从给定的源点出发每一个顶点仅被访问一次C.图的深度遍历不适用于有向图 B.遍历的基本算法有两种: 深度遍历和广度遍历D.图的深度遍历是一个递归过程 (10)下面哪一方法可以判断出一个有向图是否有环(回路): () A.深度优先遍历B.拓扑排序C.求最短路径D.求关键路径 (11)已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={ A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7 C.V1,V3,V4,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V7 (12)在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。 A.G中有弧 C.G中没有弧 (13)关键路径是事件结点网络中()。 A.从源点到汇点的最长路径B.从源点到汇点的最短路径 C.最长回路D.最短回路 (14)下面关于求关键路径的说法不正确的是()。 A.求关键路径是以拓扑排序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习 知识点 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)