数据结构(C++版)复习要点考试说明:考试时间为120分钟,总分100分。
考试题型为:一、单选题:(每小题1分,本大题共10分)二、填空题:(每空2分,本大题共20分)三、简答题:(每小题5分,本大题共50分)四、算法设计题:(每小题10分,本大题共20分)第一章绪论本章主要介绍了一些基本概念。
对于本章内容的掌握主要以概念为主。
主要知识要点1、理解数据、数据元素、数据项、数据对象、数据类型、数据结构的概念。
2、掌握如何用二元组来表示一个数据结构。
掌握数据的四类基本逻辑结构(集合、线性结构、树型结构、图状或网状结构)。
3、理解顺序存储方法和链式存储方法是怎样存储数据的。
4、时间复杂度和空间复杂度(给程序能写出复杂度),常用操作的时间复杂度。
例题:1. 设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是(D )。
A.线性结构B. 树型结构C. 物理结构D. 图型结构2. 下面程序的时间复杂为(B )for(i=1,s=0;i<=n;i++){t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}A. O(n)B. O(n2)C. O(n3)D. O(n4)3. 数据的物理结构主要包括____顺序___和___链式____两种情况。
4. 下面程序段的时间复杂度是i=s=0; while(s<n) { i++; s+=i; }第一次执行完s+=i, s = 1第二次s = 3 = 1+2第三次s = 6 = 1+2+3第四次s = 10 = 1+2+3+4第k次s=1+2+3+4+...+k == k*(k+1)/2那么当k*(k+1)/2 >=n 的时候停止,即k =关于n的表达式是根号的, n1/2第二章线性表本章主要介绍了线性表的定义、存储方式的描述和基本运算以及实现算法。
要求掌握并能灵活应用概念及性质。
主要知识要点1、掌握线性表定义、逻辑特性、空表、文件、前驱元素、后继元素的概念。
2、掌握顺序存储及顺序表的定义。
掌握顺序存储结构的优缺点,插入删除操作算法。
数据元素的存储位置取决于第一个数据元素的存储位置LOC(a i) = LOC(a1) + (i-1)×C 3、掌握线性链表的定义。
掌握链式存储结构的优缺点,单链表插入删除操作算法,单链表、双向循环链表的插入与删除操作,头结点的作用,单链表的判空条件。
4、掌握静态链表的概念。
例题1、顺序表中逻辑上相邻的元素的物理位置(一定)相邻。
单链表中逻辑上相邻的元素的物理位置(不一定)相邻。
2、线性表的顺序存储、链式存储有哪些特点?3、线性表的两种存储结构其中(顺序)存储密度较大;(顺序)存储利用率较高;(顺序)可以随机存取;(链式)不可以随机存取;(链式)插入和删除操作比较方便。
4、设指针变量p指向单链表中结点A前驱,若删除单链表中结点A,则需要修改指针的操作序列为(C )。
A. q=p->next;p->data=q->data;p->next=q->next;free(q);B. q=p->next;q->data=p->data;p->next=q->next;free(q);C. q=p->next;p->next=q->next;free(q);D. q=p->next;p->data=q->data;free(q);5、对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( B )A.head==NULL B.head->next==NULLC.head->next==head D.head!=NULL6、在一个单链表中,已知q所指结点是p所指结点的前趋结点,若在q和p之间插入S结点,则执行( C )。
A. S->next=p->next; p->next=S; B.p->next=S->next; S->next=p;C. q->next=S; S->next=p;D. p->next=S; S->next=q;7、在一个长度为n的向量中删除第i个元素(1<=i<=n)时,须向前移动(n-i )个元素。
8、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表9、编写算法实现顺序表的就地逆置,即要求利用原顺序表的存储单元,把数据元素序列(a0,a1,…,a n-1)逆置为(a n-1,…,a1,a0)。
10、设计在单链表中删除具有某种特性的结点的算法。
11、在如下数组AAdatanext12、设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_______个数据元素;删除第i个位置上的数据元素需要移动表中_______个元素。
栈和队列本章主要介绍了栈和队列的定义、性质及对栈和队列进行操作的特殊性。
要求掌握并能灵活应用概念及性质。
主要知识要点1、掌握栈的概念、特点:栈顶、栈底、进栈及出栈。
掌握顺序栈/链栈的基本运算:初始化、入栈、出栈、取栈顶和判空,栈的入栈和出栈的前提条件(判空和判满)2、掌握队列的概念、特点,掌握循环队列/链队列队列的基本运算:初始化、入队、出队、取队头顶和判空。
入队和出队的前提条件(判空和判满)顺序循环队列的front和rear指针的变化规律(出队front+1,入队rear+1)、求队列长度链队列的基本操作:插入、删除、访问、查找、求队列长度3、栈和队列特点的比较,通过给出进入栈或者队列的元素序列,能够求出栈或者队列元素的序列。
4、栈和队列的应用举例,应用栈和队列的求解问题(如进制转换、判断括号匹配、……)。
例题1、栈是仅在(表一端)进行插入删除操作的线性表。
允许插入删除的一端为(栈顶),另一端为(栈底)。
2、栈有两种存储表示方法:(顺序栈)和(链栈)。
3、链栈s在进行出栈操作时首先要判断(栈是否为空)。
4、栈和队列的逻辑结构都是(线性表)。
5、一个栈的输入序列为1 2 3 4 5,则下列序列中是栈的输出序列的是(A )。
A.2 3 4 1 5 B. 5 4 1 3 2 C. 3 1 2 4 5 D. 1 4 2 5 36、一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是(B )a、23415b、54132c、23145d、154327、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为( A )。
A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m串本章主要介绍了串的定义、串的几种存储方法,串的基本运算及实现方法。
掌握串的概念及性质。
主要知识要点1、掌握串的定义,存储方法,空串与空格串区别、子串、主串。
2、如何判断两个串是否相等。
3、掌握串有静态和动态两种存储结构方法。
4、掌握串有哪些基本运算(串连接、串复制、串求长度函数)例题1、串是()。
2、空串是指()。
3、如何判断一个串是另外一个串的子串。
4、如何判断两个串相等。
5、串有哪两种存储方式(顺序和链式)。
6、串的长度是指(串中字符的个数)。
7、空串与空格串的区别是什么?8、设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:( D )A)BCDEF B)BCDEFG C)BCPQRST D) BCDEFEF数组和广义表本章主要介绍了数组的定义及基本运算,数组的存储结构及特殊矩阵的压缩存储,广义表的概念、基本运算及存储结构。
通过本章内容的学习能够解决具体的问题。
主要知识要点1、掌握数组的定义、性质及数组的基本操作有哪些。
2、理解数据的顺序存储的含义,矩阵的顺序存储表示。
⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=010000000000010010100000010100001010Edge 3、掌握LOC[i ,j]=LOC[0,0]+(b2*i+j )*L 。
按行或列优先进行存储时,数组下标和元素存储地址的关系公式4、n 阶对称矩阵、上/下三角矩阵、对角线矩阵的压缩存储的公式(见课件),稀疏矩阵的存储方法(三元组)、矩阵的转置方法5、掌握广义表的定义、如何求广义表的深度、长度、表头、表尾及如何利用函数HEAD 和TAIL 来取出广义表内的某个元素的内容;画出广义表的头尾链表存储结构。
例题1、已知一个6⨯6稀疏矩阵如下所示,写出它的三元组线性表;2、已知一维数组A采用顺序存储结构,每个元素占4个存储单元,如果第一个元素的地址为100,则A[10]的地址是( 10×4+100=140 ) ;如果第九个元素的地址为144,则该数组的首地址是( 144-9×4=108 )。
3、二维数组A[10][20]采用行序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址为200,则A[6][12]的地址为( (5×20+12)×1+200 )。
4、n 阶对称矩阵压缩存储在一维数组V中,V数组的下标范围是( 0 .. n(n-1)/2-1 )。
5、把对称矩阵A[1..5,1..5] 压缩存储在一维数组M[1..15]中,元素A[4,3]存储在M 中的下标是( (1+2+3+3)=9 )。
⑴4 ⑵3 ⑶9 ⑷126、取出广义表:LS=(a,b,(c,d,e),(f,g))元素c 的操作是(H(H(T(T(s)))) )。
7、已知广义表LS =((a,b,c),(d,e,f)),运用head 和tail 函数取出LS 中原子e 的运算是( A )。
A. head(tail(head(tail(LS)))B. tail(head(LS))C. head(tail(tail(head(LS))))D. head(tail(LS))第四章 树本章主要介绍了树、二叉树的定义、性质、存储结构及其各种操作,树和森林与二叉树之间的转换关系。