




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、习题一1. 简述下列术语:数据、数据元素、数据对象、数据结构、逻辑结构、存储结构、基本运算、运算实现和数据类型 。2. 设有数据结构(D, R),其中D=d1,d2,d3,d4,R=r,r= (d1, d2 ) , (d2, d3 ) , (d3, d4 ) . 试按图论中图的画法惯例画出其逻辑结构图。3. 函数f(M,n)按下式定义(m,n为0的整数):f (m,n)=m+n+1 当m*n=0时f(m-1,(m,n-1) 当 m*n0 时(1)试写出计算该函数的递归过程;(2)写出递归过程转换成非递归过程的转换规则。4. 把数组 A1n按递减顺序排序,并分析其最坏情况时间复杂性量级。5. 为
2、了用计算机实现学生档案管理, 需要经过哪些主要步骤?每个步骤的主要工作是什么?试用本章讲到的从“具体到抽象”、再“从抽象到具体”的观点加以分析。6. 试设定若干n值,比较两函数n2和50nlog2n的增长趋势,并确定n在什么范围内,函数n2值大于50nlog2n 的值。习题二1. 设线性表存于a(1:n)的前elenum个分量中,且递增有序。试写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性。2. 写一个逆置线性表的算法。即由A1:n产生B1:n,使得 B1=An,B2=An-1 , Bn=A1。要求用最少的附加空间。3. 设有编号为 1,2,3,4 的四辆列车,顺序进入一个栈式结
3、构的站台,试写出这四辆列车开出车站的所有可能顺序。4. 设有六辆火车编号为1,2,3,4,5,6 利用栈,将它们重新编成3,2,5,6,4,1的顺序。请写出操作序列,设X表示将一列火车从栈中开出;S表示将一列火车从输入端开入栈中。5. 假设栈中每个数据项占K个空间位置,试改写入栈和出栈的算法。6. 假设有两个栈如图所示共享空间 1.m。试写一个对任一栈作入栈 push(s,x,i)和出栈pop(s,i)。( i = 1,2 )的算法,只有在整个 1m空间均满时才产生溢出。6 题图 两个栈共享一个数组示意图7. 按照四则运算加、减、乘、除和幂运算优先关系的惯例,画出对下列算术表达式求值时操作数栈
4、和运算符栈的变化过程。A-BXC/D+EF8. 假设以数组 cycque(0m-1)存放循环队列的元素,同时设变量 rear和quelen分别表示循环队列中队尾元素位置和内含元素的个数。试给出此循环队列的队满条件。并写出相应的入队列和出队列算法。(在出队列的算法中要返回队头元素)。9. 已知 Ackerman 函数的定义如下 :(1)试写出递归算法并画出 m,n 取值时工作栈状态变化情况。(2)写出非递归算法10. 联系现实生活理解限制存取点的线性表 。限制存取点的线性表有 (1)栈和队列:本章中巳介绍 .(2)双端队列:对所有的插入和删除都限定在表的两端进行的线性表 。10题图 (1)双端队
5、列(3 双栈 : 规定从端 1 插入的元素只能从端 1 端删除 , 而从端2 插入的元素只能从端 2 端删除 。它是一种加限制的双端队列。好象两个底部相连的栈。10题图 (2) 双栈习题三1. 描述以下三个概念的区别:头指针、头结点、首元结点。2. 试编写在无头结点的单链表上实现线性表基本运算 LOCATE(L,X)、INSERT (L、X、i)和DELETE (L、i)的算法,并和在带头结点的单链表上实现相同运算的算法进行比较。 3. 试写出在不带头结点的单链表上实现线性表基本运算LENGTU(L)的算法。4. 试写出一个把不带头结点的单链表逆转的算法。即将链表X=(a1,a2,an)变成(
6、an,an-1, a2,a1), 且将原来指向a1 的头指针改为指向an 。(要求用修改指针的方法来实现)。5. 假设两个按元素值递增有序排列的线性表 A 和 B, 均以单链表作存储结构 .编写算法将 A 和 B 表归 并成一个按元素值递减有序允许值相同排列的线性表 C, 并要求利用原表 EP A 和 B 表结点空间存放表C。6. 设有两个线性表 x=(x1,x2, ,xm) 和 y= y1, y2, ,yn .均以单链表为存储结构。写 出一个将 x,y 合并为线性表 z 也是用链表方式存储的算法 , 使得 Z=(x1,y1,x2,y2,xmymym+1,yn) 当mn; (x1,y1,x2,
7、y2,xnynxn+1,xm) 当mn 要求 : z 表利用单链表 x,y 的结点空间7. 已知单链表 L 中的结点是按值非递减有序排列的 , 试写一算法将值为 x 的结点插入表 L 中 , 使得 L 仍然有序8. 假设分别以两个元素值递增有序的线性表 A 、 B 表示两个集合即同一个线性表中的元素各 不相同 , 现要求构成一个新的线性表 C,C 表示集合 A 与 B 的交 , 且 C 中元素也递增有序 .试以单链表为存储结构 , 编 写实现上述运算的算法9. 已知 A 、 B 和 C 为三个元素值递增有序的线性表 , 现要求对表 A 作如下运算删除那些既在 表 B 中出现又在表 C 中出现的
8、元素 .试以链式存储结构 , 编写实现上述运算的算法10. 假设在长度大于 1 的循环链表中 , 既无头结点也无头指针 .s 为指向链表中某个结点的指 针 , 试编写算法删除结点 S 的前趋结点11. 已知一单链表中的数据元素含有三类字符即:字母字符、数字字符和其它字符 .试编写算法 , 构造 三个循环链表 , 使每个循环链表中只含同一类的字符 , 且利用原表中的结点空间作为这三个表的结点空间头 结点可另开辟空间12. 试用两种存储结构来解约瑟夫 (Josephus )问题 , 其问题如下 Zn 个人围在圆桌周围 .从某个位置上的 人开始报数 , 数到 m 的人便出列 F;下一个人第 m+1
9、个又从 1 数起 , 数到 m 的人便是第 2 个出列的人 , 依次 重复下去 , 直到最后一个人出列 .于是得到一个新的次序 .例如 , 当 n=8,m=4 时 , 若从第一个位置数起 , 则所得到的次序为 :4852137613. 假设以带头结点的循环链表表示队列 , 并且只设一个指针指向队尾元素结点不设头指针 , 试编写相应的置空队列、入队列和出队列的算法14. 写一个算法,借助栈将一个单链表倒置。15. 在双链表上实现线性表的下列基本运算 :a 初始化 ; b 定位; c 在第 i 个结点前插入一个新的元素x;(d) 删除第 i 个结点16. 假设用循环链表来表示多项式 A 和 B.
10、试写出一个将多项式 B 加到多项式 A 上去的算法17. 假设民航公司有一个自动预定飞机票系统 , 该系统中有一张双重链表所表示的乘客表 .表中结点按乘客的姓氏字母顺序相链 .例如 , 下面是一张某个时刻的乘客表 .试为该系统写出一个当任一乘客订票或退 票时修改乘客表的算法。 序号 data Llink Rlink 0 zzz 7 4 1 L1 6 5 2 chang 4 9 3 wang 5 7 4 bai 0 2 5 ma 1 3 6 du 8 1 7 xia 3 0 8 ding 9 6 9 chen 2 8 18. 假设利用边界标识法首 次适配策略分配,巳知在某个时刻的可利用空间表的状
11、态如图所示:(1) 请画出当系统回收个起始地址为 559, 大小为 45 的空闲块之后的链表状态(2) 请画出系统继而在接受存储块大小为 100 的请求之后又回收一块起始地址为 515,大小为 44 的空闲块之后的链表状态注 : 存储块头部中大小域的值和申请分配的存储量均包括头和尾的存储空间 18题图19. 组织成循环链表的可利用空间附加什么条件时 , 首次适配策略就转为最佳适配策略?20. 另一种动态分配的方案是伙伴 buddy 系统 , 也就是 ,在每次遇到请求时, 只分配大小为 2 的幂次的存储块 .当用户请求大小为 n 的存储区时 , 系统将分配给大小为 2k的存储块 ,这里 ,k=l
12、og2n. 于是自由块 的大小也总是 2 的幂次 .若总的内存为2m(地址从0到 2m-1,则自由块可能的大小为 2k ( 0 k m )将所有大 小相同的自由块放在同一个自由区链表中 , 则伙伴系统共有 m+1 个自由区链表 , 每张表是一个带表头结点avail(i)的双重循环链表(0im),每个自由块的结点结构为:系统开始运行时,只有一块从0开始,大小为2m的自由块。当用户请求大小为i的存储区时,系统将分配一大小为2k,k=log2n的存储区。首先搜索所有的自由区链表,找到一个非空表 avai(i) k i m , 然后从此表中删除一个结点 .假设它的初始化地址为 p, 则当 i=k 时
13、, 便将此结点分配给用户 , 当 i k 时 , 便将此自由区分割为起始地址为 p 和 p+2i-1 的两部分 , 并将起始地址为 p+2i-1 的自由区插入到相应的链表中 , 若 i-1=k, 则将起始地址为 p 的块分配给用户 , 否则再予以分割 , 直 至得大小为2k的自由区分配给用户为止 .分配了的结点结构为: 试做如下练习:(1) 写出一个对自由区链表进行初始化的算法。 (2)写出一个如上所述的动态分配算法。习题四1. 顺序列出数组A( 2:3,-4:-3,-1:1,7:9)中所有元素 aij,u,v 为了简化表达,可以只列出(i,j,u,v)的序列。2. 设有上三角矩阵(aij)n
14、*n,将其上三角元素逐行存于数组B(1:m)中,使得 BK= aij,k=f1(i)+f2(j)+c。试推导出函数f1,f2和常数C(要求f1和f2中不含常数项)3. 设有三对角矩阵 (aij)n*n, 将其三条对角线上的元素逐行地存于数组B(1:3n-2)中,使得BK= aij,求:(1) 用 i,j 表示 k 的下标变换公式;(2) 用 k 表示 i,j 的下标变换公式。4. 设有三对角矩阵 A,用一组数组B存放A中三对角上的元素a(i,j)(1 in,i-1ji+j),试写出一个由B确定A 的元素值的算法。5. 若用三元组形式表示稀疏矩阵A和B试写一个A+B的算法,并分析所写算法的时间。
15、6. 若在 m*m 的矩阵中有一个元素aij,满足下述条件:aij即是第i行元素上最小的值,又是第j列元素中最大的值(此时, 称矩阵A有鞍点)。试写一求矩阵鞍点的算法,并分析你的算法所需的时间,若不存在鞍点,则给出某个信息。7. 试设计一个算法,将数组A(O:n-1)中的元素循环右移K位,并要求只用一个元素大小的附加存储;元素移动或交换次数为 o(n)。8. 设有二维数组M:array-1. 4,0.3of integer,每个元素(整数)占2个存储单元,数组的起始地址为2000,试给出元素M2,1和M4,3的存储位置。9. 用计算机模拟“迷宫问题”,求出其中一条通路,用数组MAZE1.m,1
16、.n表示迷宫,数组元素为1表示死路,为O 表示通路,MAZE1,1为迷宫入口,MAZEm,n为迷宫出口,试设计一个判别迷宫问题是否有解的算法,在有解时,将一个解的路经打印出来。10. 设有广义表K1(K2(k5(a,k3(c,d,e),K6(b,g),k3,K4(k3,f) 试画出广义表 K1 的逻辑图形表示; 请给出凡的单链表表示法。11. 求下列广义表运算的结果(1)head(p,h,w);(2)tall(b,k,p,h);(3)head(a,b),(c,d);(4)tall(a,b),(c,d);(5)head(tall(a,b),(c,d);(6)tall(head(a,b),(c,d
17、);(7)head(tall(head(a,b),(c,d);(8)tall(head(tall(a,b),(c,d)。习题五1. 简述空串和空格串的区别2. 设a$=iamastudentb$=good,c$=worker求LEN(a$);LEN(c$);SUB (a $ ,8,14); SUB(b$,2,2);index(a$,A);index(a$,b$);d$=SUB(a$,6,7)/b$/SUB(a$,7,14);e$ =repl(d$,student,c$)。3. 问,执行下列一段程序后的输出结果是什么? PRO C q; (a,b,n,m,p 都为串变量 BEGIN a=this
18、isabook; SUB(a,3,9):=escare; b=a/s; write (a$= ,b) ; n=xyxyxyxy; m=SUB(n,6,8); p:=t; vrite(m$ =,m,n$=,repl(n,m,p) END;4.设a$=(xyz)+*,b$=(x+z)*y,问,应该对a$进行哪些运算,才能得到如b$的运算结果?5. 给定两个串st1及st2,求在st1中第一次出现的,而在st2中不出现的字符的序号,写出其算法.6.试写出一个串匹配的算法。并请估计你所写的算法的效率。(设m=模式长度;n=正文长度;mn=m+n; s:为数组,用来存放正文字符串的位置为1.n存放模式字
19、符串的位置为n+1.n+m)。7.若s和T是用结点大小为1的单链表存储的两个串,设计一个算法将串S中首次与串T匹的子串逆置。8.令S=aaab,t=abcabaa,n=abcaabbabcabacba。试分别求出它们的next函数值和nextval函数值。9.试设计一个算法,求串s和串t的一个最长公共子串,并分析你的算法的时间复杂度,若要求第一个出现的最长公共子串(即它在串s和串t的最左边的位置上出现)和所有的最长公共子串,并讨论你的算法的时间复杂度。10.给定三个串st1$=aaab,st2$=ababaa,st3$=ababaababb。试用链表方式存储映象。习题六1. 已知一棵树边的集合
20、为(I,M),(I,N),(E,I),(B,E),(B,D),(A,B),(G,J),(G,K),(C,G),(C,F), (H,L), (C,H), (A,C),画出这棵树,并回答下列问题:(1) 哪个是根结点?(2) 哪些是叶子结点?(3) 哪个是结点 G 的双亲?(4) 哪些是结点 G 的祖先?(5) 哪些是结点 G 的孩子?(6) 哪些是结点 E 的子孙?(7) 哪些是结点 E 的兄弟?(8) 结点 B 和 N 的层次号分别是什么?(9) 树的深度是多少?(10) 以结点 C 为根的子树的深度是多少?2 试分别画出具有 3 个结点的树和 3 个结点的二叉树的所有不同形态。3 一个深度为
21、 h 的满 k 叉树有如下性质:(1) 各层的结点数目是多少?(2) 编号为 n 的结点的父结点(若存在)的编号是多少?(3) 编号为 n 的结点的第 i 个儿子结点(若存在)的编号是多少?(4) 编号为 n 的结点有右兄弟的条件是什么?其右兄弟的编号是多少?4 已知一棵度为 m 的树中有 n1 个度为 1 的结点,n2个度为2的结点, ,nm 个度为 m 的结点,问该树中有多少个叶子节点?5 假设以二叉链表作存储结构,试分别写出前序和后序遍历的非递归算法。6 假设 n 和 m 为二叉树中两结点,用 “1”、“0” 或“”扩分别表示肯定、相反或不一定填写下表:7. 以二叉链表作存储结构,编写算
22、法将二叉树中所有结点的左右 子树相互交换.8. 假设在二叉链表的结点中增设两个域,双亲域(parent)以指示其双亲结点;标志域(mark): 0.2;以区分在遍历过程中到达该结点时应继续向左或向右或访问该结点.试以此存储结构编写 不用栈的后序遍历的算法.9. 已知一棵以二叉链表作存储结构的二叉树,试编写复制这棵二叉树的非递归算法.10. 已知条件同题9.试编写按层次顺序(同一层自左至右)遍历二叉树的算法.11. 编写一个算法,输出以二叉树表示的算术表达式、若设表达式中含有括号,则在输出 应添上.已知二叉树的存储结构为二叉链表.(提示: 利用后序遍历)12. 请对图示二叉树进行后序线索化,为每
23、个空指针建立相应的前驱或后继线索. 12题图13. 试写一个算法 , 在中序全线索化二叉树中 .结点 p 之下插入一棵以结点 x 只有左子树的中序全线索化二叉树 , 使 x 为根的二叉树成为 P 左子树 .若 P + 原来有左子树 , 则令它为 x 的右子树 .完成插 入之后的二叉树应保持全线索化特性 .14. 试找出分别满足下列条件的所有二叉树.先根序列和中根序列相同.根序列和后根序列相同.根序列和后根序列相同 .15. 试分别画出图中所示树的孩子链表、孩子兄弟链表和静态双亲链表.15题图16. 将图示树林转换成二叉树16题图 17.分别画出图示各二叉树对应的树林.17题图 18假设用于通讯
24、的电文仅由8个字母组成,字母在电文中出现的频率分别为7,19,2,6,32,3,21,10. 试为这8个字母设计哈夫曼编码.使用07的二进制表示是另一种编码方案.对于上述实例,比较 两种方案的优缺点.19. 下面的结论正确吗? “不管是(a)先根顺序,(b)中根顺序,(c)后根顺序穿越二叉树并列出二叉树的结点序列.其终端结点都以相同的相对顺序出现”.如果你认为结论是正确的,试证明之.20. 请说明什么样的二叉树可以实现对后序线索树进行后序遍历时不使用栈?对前序线索树进行前序遍历时,什么样的二叉树可不使用栈?21. 试证明若n个结点的二叉树在机内表示成非线索形式则全部空链的个数表示成n的简单函数
25、.而且这个量不依赖于二叉树的形式.22. 二叉树有n个结点,按先根排列时为U1,U2,Um而按中根排列时为UP1,UP2,UPn.试证明 排列P1,P2,Pn可借助于栈由1,2, ,n获得.相反,若P1,P2,Pn是可以用栈由1,2, ,n得到的任一排列,则可以使它对应于某二叉树.习题七1 对于下图所示的有向图,试求出: (1) 每个顶点的入度和出度;(2) 它的邻接矩阵;(3) 它的邻接表;(4) 它的邻接多重表;(5) 它的强连通分量。1题图2 写出将一个无向图的邻接矩阵转换成邻接表的算法。3 试以邻接矩阵为存储结构,分别写出连通图的深度优先和广度优先搜索算法。4 已知带权连通图 G(V,
26、E)的邻接表如下,试画出G的一棵最小生成树。其中顶点的三个域含义如下:(表示指针值为空) 5 设有一个图如下所示,试列出从B至B的所有闭路。5题图6 试利用深度优先搜索求无向图中通过给定点 Vk 的简单回路的算法。7 试对图 7.4(a) 所示的的无向图G4画出其广度优先生成树林。8 请对下图,(1)写出它的邻接矩阵,并按普里姆算法示其最小生成树 ;(2)写出它的邻接表,并按克鲁斯卡尔算法求最小生成树。8题图9 试利用Dijkstra 算法求下图中从顶点 1 到其它各顶点间的最短路径。写出执行算法过程中各步的状态。9题图10 写出如下的有向图的拓扑序列。10题图11 对下图所示AOE-网,求出
27、每项活动的最早开始时间e(i)和最迟开始时间l(i)。并问:工程完成的最短时间是什么?那些活动是关键活动?是否有哪项活动提高速度后能导致整个工程缩短工期?11题图习题八1 试述顺序查找法,折半查找法和分块查找法对被找的表中元素的要求。对长度为n的表的三种查找法的查找长度怎样?(设出现的概率相同)。2 试将折半查找的算法改写成递归调用形式的算法。3 画出对长度为 10 的有序表进行折半查找的判定树,并求其等概率时查找成功的平均查找长度。4 试编写利用折半查找确定记录所在块的分块查找算法。5 已知如下所示长度为12的表(Jan,Feb,Mar,June,July,Aug,Sep,Oct,Nov,D
28、ec) 试按表中元素的顺序依次插入一棵初始为空的二叉排序树,请画出插入完成之后的二叉排序树,并求其在等概率情况下查找成功的平均查找长度。 按表中元素顺序构造一棵二叉平衡树,并求其在等概率情况下查找成功的平均查找长度。6 有 144 项的表分成几块最好?每块的最佳长度为多少?假定每块长度为8,则其平均查找长度是多少?7 试推导含12个结点的平衡二叉树的最大深度,并画出一棵这样的树。8 试从空树开始,画出按以下次序向2-3树中插入关键码的建树过程:20,30,50,52,60,68,70。然后再在此树上删除50,68,画出每执行后2-3树的状态。9 选取哈希函数H(k)=(3k) MOD 11。用
29、开放定址法处理冲突,d1= H(k);di=(di-1+(7k)MOD 10+l)MOD 11(i=1,2,3,)。试在010的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功与不成功时的平均查找长度。10 试写出一个判别给定二叉树是否为二叉排序树的算法。设此二叉树以二叉链表作存储结构。且树中结点的关键字均不同。11 证明二叉排序树按中序遍历打印出的信息,是从小到大排序的。12 试编写算法求出指定结点在给定的二叉排序树中所在的层数。习题九1. 在内排序算法中,用阶的形式给出完成排序所需时间的范围,即分别给出最快和最慢排序算法平均所需
30、的时间)。2. 在执行某个排序算法过程中,出现了排序码朝着最终排序序列相反方向的移动。从而认为该排序算法是不稳定的。这种说法对吗?为什么?3. 设有1000个无序的元素。希望用最快的速度挑出其中前10个最大元素;在以下的排序方法中采用哪一种最好?为什么?(1)快速排序,(2)选择排序,(3)插入排序,(4)堆排序,(5)基数排序4. 作为输入的是四个俱乐部C1,C2,C3.C4的未排好次序的成员的名单。各俱乐部的成员数都不超过250人。试编写一个程序,用来找出那些至少属于三个俱乐部的所有的人。提示,为简单起见,可以假定成员名单中写的不是名字而是正整数编号(一个人一个编号)。5. 希尔排序、选择排序、堆排序及快速排序是不稳定的。试给出一个有相同关键字的记录的例子。说明其不稳定性。6. 如果输入的已为有序表,试证明使用快速排序时其时间为O(n2)。7. 若存于 1 页序存储结构中的n个元素的序列近似有序,即若去掉其中少数k个元素后的序列是有序序列,试对这种文件讨论各种简单排序方法的时间复杂度。8. 假设有1000个值小于10000的整数数列,请设计一种排序方法,要求以尽可能少的比较次数和移动次数实现排序,并按你的设计编出算法。9. 设计一个用链表表示的直接选择排序算法。10. 设计一个用链表表示的直接插入排序算法。11. 一个线性表中的元素为正整数或负整数。设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村庄房屋绿化管理办法
- 城市供水系统恒压控制技术优化设计研究
- AI时代数据价值最大化:从底层架构到大模型应用落地实践
- 园区地面车辆管理办法
- 物业公司员工绩效考核与奖惩制度
- 钢结构厂房施工组织设计优化与钢结构部分研究
- 园区弱电维护管理办法
- 城市更新与拆迁工作的策略与实施
- 智慧停车试点管理办法
- 沈阳快递管理办法细则
- 海滩冲浪课程行业跨境出海战略研究报告
- 围墙维修施工方案(3篇)
- 设备安装调试服务合同
- 压疮医疗护理
- 三农村能源利用方案手册
- 《高血压肾损害》课件
- 全国高校辅导员职业能力大赛基础知识测试题题库(60问)
- 2024用电信息采集系统技术规范1-3部分
- 渗滤液处理应急预案
- 全册背记资料-2024-2025学年七年级地理上学期湘教版
- 《水工建筑物》课件-模块四:土石坝
评论
0/150
提交评论