江苏师范大学数据结构总复习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6、一个队列的进队顺序是1,2,3,4,则该队可能的输 出序列是( ) A 1,2,3,4 B 1,3,2,4 C 1,4,2,3 D 4,3,2,1
7、牺牲一个单元区分队空、队满条件的循环队列的 队满条件是( )
A (q.rear+1)%maxSize==(q.front+1)%maxSize
B (q.front+1)%maxSize==q.rear C (q.rear+1)%maxSize==q.front D q.frong==q.rear
} else return sym; }
sym=false;
本章要点: (1)栈的队列定义和特点,包括: 栈的定义,注意栈顶进出、栈底不能进出,顺序存 取的概念,栈的先进后出的特点 队列的定义,注意队头出、队尾进、顺序存取的概 念,队列的先进先出的特点 ③ 注意区分栈、队列、向量。栈的队列是顺序存取, 向量是直接存取 ④ 进栈、出栈、判空、臵空操作的使用 ⑤栈空、队空在实际使用时不算出错,它标志某种处 理的结束 ⑥ 栈满、队满在实际使用时用力判断可能的出错
9、设栈S的队列Q的初始状态为空,元素a,b,c,d,e,f,g 依次进栈栈S。如果每个元素出栈后立即进入队列Q, 且7个元素出队的顺序为b,d,e,f,e,a,g,则栈S的容量至 少是( )
A1
B2
C3
D4
第四章:数组和广义表
• • • • • • • • 1要点: 确定数组元素的三要素:行号、列号、元素值 数组元素的存放地址计算 2、顺序表:顺序表的定义、搜索、插入与删除 要点: 顺序表搜索算法、平均比较次数的计算 插入与删除算法、平均移动次数的计算 3、字符串:字符串的定义及其操作的实现 要点: 串重载操作的定义与实现 4. 广义表:广义表定义、长度、深度、表头、表尾
(3)队列的存储表示及其基本运算的实现 循环队列的雷结果定义,注意对头指针和队尾指针 进退的方向,以及如何用这两个指针判对空和队列满 循环队列的进队、出队的取模操作的实现 使用对头指针front和队列长度length实现循环队列 时进队列和出队列的操作 ④ 链式队列的类结构定义 ⑤链式队列的进队和出队列操作的实现 ⑥ 双端队列的进队、出队运算的实现 ⑦ 优先级队列的存储结构
5、已知L是带表头的单链表,L是表头指针,则摘除 首元结点的语句是( ) A L=L->link C L=L->link->link B L->link=L->link->link D L->link=L
6、已知单链表A长度为m,单链表B长度为n,若将 B接在A的末尾,在没有链尾指针的情形下,算法的 时间复杂度应为( ) A O(1) B O(m) C O(n) D O(m+n) 7、从一个具有n个结点的有序单链表中查找其值等 于x的结点时,在查找成功的情况下,平均需要比较 ( )个结点。 An B n/2 C (n-1)/2 D (n+1)/2
(4)栈的应用
1、已知一个栈的进栈序列为1,2,3,…,n,其输出序 列的第一个元素是i,则第j个出战元素是( ) A j-i B n-i C j-i+1 D 不确定
2、已知一个栈的进栈序列为1,2,3,…,n,其输出序 列是p1,p2,p3,…,pn。若p1=n,则pi的值是( )
A i B n-i
第5章 树
1、树:树的定义、树的基本运算 要点:树的分层定义是递归的 树中结点个数与高度的关系 2、二叉树:二叉树定义、二叉树的基本运算 要点: 二叉树性质、二叉树中结点个数与高度的关系、不同种类的二叉 树棵数、完全二叉树的顺序存储、完全二叉树的双亲、子女和兄弟的位 置,二叉树的前序· 中序· 后序遍历的递归算法和使用栈的非递归算法二 叉树的层次遍历算法 中序线索化二叉树、前驱与后继的查找方法、建立中序线索化二叉树 的算法 3、霍夫曼树:霍夫曼树的构造方法、霍夫曼编码、带权路径长度的计算 4、树与森林 要点:树的广义表表示、树的双亲表示、树的左子女-右兄弟表示 树、森林与二叉树的对应关系 树的先根· 后根· 层次遍历算法
(2)栈的存储表示及其基本运算的实现: 顺序栈的类结构定义 顺序栈的栈顶指针实际指示的位臵,以及如何用栈 顶指针表示顺序栈的栈空、栈满条件 顺序栈的进栈、出栈运算的实现。注意操作的前臵 条件和后臵条件,以及在参数表中应用参数的作用 ④双栈共用一个数组的进栈、退栈、臵空栈、判栈空 算法以及栈满、栈空条件 ⑤链式栈的结构定义,注意链式栈的栈顶指针实际指 示的位臵 ⑥ 链式栈的进栈、出栈运算的实现,注意链式栈的栈 空条件 ⑦ 栈满时的扩充算法
1、在下列关于线性表的叙述中正确的是( )
A 线性表的逻辑顺序和物理顺序总是一致的
B 线性表的顺序存储表示优于链式存储表示
C 线性表若采用链式存储表示时,所有存储单元的 地址可连续或者可不连续
D 每种数据结构都应具备三种基本运算——插入、 删除和查找
2、若长度为n的非空线性表采用顺序存储结构,在 表的i个位臵插入一个数据元素,i 的合法值应该是() A i>0 B 1<=i<=n C 0<=i<=n-1 D 0<=i<=n
7、有实现同一功能的两个算法A1和A2,其中A1的渐 进时间复杂度是 T1 n O2 n ,A2的渐进时间复杂度 为 T2 n On 2 。仅就时间复杂度而言,具体分析这两 个算法哪个好。
比较算法好坏,需要比较两个函数2n和n2 当n=1时,21>12,算法A2好于A1 当n=2时,22=22,算法A2与A1相当 当n=3时,23<32,算法A1好于A2 当n=4时,24>42,算法A2好于A1 当n>4时,24>n2,算法A2好于A1 当n→时,算法A2在时间上好于A1
4、算法是一个有穷的指令集,它为解决某一特定任务 规定了一个运算序列。它应当具有输入、输出、 ( 确定性 )、有穷和可行性等特性。
5、算法效率的度量分为(事后测量 )和 事前估计 ( )。前者主要通过在算法的某些部位插 装时间函数来测定算法完成某一个规定功能所需要的 时间。而后者不实际运行算法,它是分析算法中语句 的执行次数来度量算法的时间复杂度。 6、程序所需要的存储空间包含两个部分( 固定部分 ) 和( 可变部分 )。前者空间的大小与输入输出数 据的个数多少,数值大小无关。后者空间主要包括其 大小与问题规模有关的成分变量所占空间等等。
本章要点: (2)线性表的顺序存储表示: 顺序表的静态和动态的C结构定义,以及C++类定 义 顺序表的特点:即元素的逻辑顺序和物理顺序的一 致性 顺序表的主要操作,如插入、删除、搜索等的实现 算法 ④ 掌握主要功能的关键语句:如遍历整个顺序表、遍 历到指定节点的语句;插入、删除时成片移动元素的 语句等 ⑤掌握简单的效率分析,包括搜索算法中数据比较次 数的计算,插入、删除的数据移动次数的计算
C n-i+1
D 不确定
3、已知一个栈的进栈序列为1,2,3,…,n,其输出序 列是p1,p2,p3,…,pn。若p1=3,则p2的值是( ) A 一定是2 B 一定是1 C 可能是1 D 可能是2
4、将递归算法转换成对应的非递归算法时,除了单 向递归和尾递归的情况外,通常需要使用( )保存 中间结果
1、顺序存储结构中数据元素间的逻辑结构是由(C ) 来表示的,链接存储结构中数据元素间的逻辑关系是 由( A )表示。 A 指针 B 逻辑顺序 C 存储位臵 D 问题上下文
2、算法的时间复杂度与( A )有关。 A 问题规模 B 计算机硬件的运行速度 C 源程序的长度 D 编译后执行程序的质量
3、某算法的时间复杂度为O(n2),表明该算法(D) A 问题规模是n2 B 问题规模与n2成正比 C 执行时间等于n2 D 执行时间与n2成正比
A 链表 B 栈 C队列 D 顺序表
Biblioteka Baidu
5、设求解某问题的递归算法如下 void F(int n){ if(n==1) Move(1); else{ F(n-1); Move(n); F(n-1); } }; 求解算法的计算时间,仅考虑算法move所作的计算, 且move为常数级算法。则算法F的计算时间T(n)的递 推关系为() A T(n)=T(n-1)+1 B T(n)=2T(n-1) C T(n)=2T(n-1)+1 D T(n)=2T(n+1)+1
判断一个带附加头结点的双向循环链表L是否对称相等 的算法如下所示,请在算法中的______中填入正确的 语句 bool symmetry(DblList DL){ bool sym=true; DblNode *p=DL->rLink,*q=DL->lLink; while(p!=q||p->lLink!=q|| sym=true ) if(p->data==q->data){ p=p->rLink _______________ q=q->lLink _______________
本章要点: (1)线性表的定义和特点,包括: 线性表的定义,注意几个关键词:有穷、序列、数 据元素; 线性表特点:唯一前驱和唯一后继。 ③线性表元素类型 ④ 线性表与向量(一维数组)的关系,注意它们间的 异同 ⑤ 线性表的操作归类:包括访问操作(搜索,遍历)、 维护操作(插入、删除),设臵操作(初始化或者臵 空),判断操作(判空、判满)、游标操作(前驱、 后继)
8、在一个具有n个结点的单链表中插入一个新结点, 并可以不保持原有顺序的算法的时间复杂度是( ) A O(1) B O(n) C O(n2) D O(nlog2n)
9、给定有n个元素的一维数组,建立一个有序单链 表的时间复杂度是( )。 A O(1) B O(n) C O(n2) D O(nlog2n)
8、设循环队列存储数组的下标是0~maxSize-1,其 队尾指针和队头指针分别为rear和front,则队列中 的元素个数为( ) A q.rear-q.front
B q.rear-q.front+1
C (q.rear-q.front)%maxSize+1
D q.rear-q.front+maxSize)%maxSize
3、对于顺序存储的线性表,其算法的时间复杂度为 O(1)的运算应() A 将n个元素从小到大排序 B 从线性表中删除第i个元素( 1<=i<=n ) C 查找第i个元素( 1<=i<=n ) D 在第i个元素( 1<=i<=n )后插入一个新元素
4、若长度为n的顺序表的表尾插入一个新元素的渐 进时间复杂度为() A O(n) B O(1) C O(n2) D O(log2n)
• 1、设有一个10阶的对称矩阵A,采用下三角阵压缩存储 方式,以行序为主存储,a11为第1个元素,其存储地址为 1,每个元素占一个地址空间,则a85的地址为( )。 • A. 13 B. 33 C. 18 D. 40 • 2. 将一个n*n的对称矩阵A的下三角部分(包括对角线)以 行序存储到一维数组T中,A[0][0]存放于T[0]中,则对任一 上三角元素A[i][j]对应T[k]的下标k是( )。 • A. i(i+1)/2+j B. j(j+1)/2+i C. i(j-i)/2+1 D. j(i-1)/2+1 • 3.若广义表L=(a ,( b ,c ,d ) ),则GetHead(L)= , GetTail(L)=
本章要点: (1)有关数据结构的基本概念,包括: 数据、数据对象、数据元素或者数据成员、数据结 构、数据类型等; 数据抽象、抽象数据类型、数据结构的抽象层次等。 (2)算法设计与分析: 算法的定义和算法的特性 算法的设计方法:包括问题解决的基本思路、算法 设计的基本步骤、算法的实现 算法的性能分析:包括算法的性能标准,算法的后 期测试;算法的事情估计;空间复杂度度量;时间复 杂度度量;时间复杂度的渐进表示法
本章要点: (3)线性表的链接存储表示: 单链表的C结构定义,以及C++类定义 单链表的特点:即元素的逻辑顺序和物理顺序的不一致性 单链表的主要操作,如插入、删除、搜索等的实现算法。注 意无附加头结点和带附加头结点的单链表上操作实现的差异 ④ 掌握主要功能的关键语句:如遍历整个顺序表、遍历到指定 节点的语句;无头结点单链表的表头插入、删除;带头结点单 链表的搜索操作;带头结点单链表的插入、删除运算以及单链 表的创建、释放、逆臵、分裂、合并等运算 ⑤有序单链表的主要操作:如搜索、插入、删除等,以及分裂, 合并,剔除重复元素等运算