收藏 分享(赏)

数据结构试题库答案 nana.doc

上传人:gnk289057 文档编号:6019479 上传时间:2019-03-24 格式:DOC 页数:44 大小:378.50KB
下载 相关 举报
数据结构试题库答案 nana.doc_第1页
第1页 / 共44页
数据结构试题库答案 nana.doc_第2页
第2页 / 共44页
数据结构试题库答案 nana.doc_第3页
第3页 / 共44页
数据结构试题库答案 nana.doc_第4页
第4页 / 共44页
数据结构试题库答案 nana.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、数据结构试题及答案一、单项选择题(1) 一个算法应该是( ) 。A) 程序 B) 问题求解步骤的描述 C) 要满足五个基本属性 D) A 和 C(2) 算法指的是( ) 。A) 计算机程序 B) 解决问题的计算方法C) 排序算法 D) 解决问题的有限运算序列。(3) 与数据元素本身的形式、内容、相对位置、个数无关的是数据的( ) 。A) 存储结构 B) 逻辑结构 C) 算法 D)操作(4) 从逻辑上可以把数据结构分为( )两大类。A) 动态结构、静态结构 B) 顺序结构、链式结构 C) 线性结构、非线性结构 D) 初等结构、构造型结构 (5) 下列叙述中正确的是( )。 A)一个逻辑数据结构只

2、能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(6) 数据的基本单位是( )A) 数据项 B) 数据类型 C) 数据元素 D) 数据变量(7) 下列程序的时间复杂度为( )i=0;s=0;while(s=n ; i+)for ( j=1; j=n ; j+)x:=x+1;A) O(2n) B)O(n) C) O(n2) D) O(log2n) (11) 程序段 for ( i:=n-1; i=i ; j+)if (ajaj

3、+1 ) t=aj; aj= aj+1; aj+1= t; 其中 n 为正整数,则最后一行的语句频度在最坏情况下是( ) 。A) O(n) B) O(nlogn) C) O(n3) D) O(n2) (12) 设有一个递归算法如下:int fact(int n) /* 大于等于 0 */if ( nnext= =head B) rear-next-next= =headC) head-next= =rear D) head-next-next= =rear(17) 从一个长度为 n 的顺序表中删除第 i 个元素(1in)时,需向前移动的元素的个数是( ) 。A)n-i B)n-i+1 C)n-

4、i-1 D)i(18) 已知一个有序表为(13,18,24,35,47,50,62,83 ,90,115,134) ,当二分检索值为 90 的元素时,检索成功需比较的次数是( ) 。A)1 B)2 C)3 D)4(19) 假设以行优先顺序存储三维数组 R696,其中元素 R000的地址为 2100,且每个元素占 4 个存储单元,则存储地址为 2836 的元素是( ) 。A) R333 B) R334 C) R435D) R434(20) 设有一个 10 阶的对称矩阵 A,采用压缩存储方式以行序为主序存储,a00 为第一个元素,其存储地址为 0,每个元素占有 1 个存储地址空间,则 a45 的地

5、址为( ) 。A) 13 B) 35 C) 17 D) 36(21) 线性表采用链式存储时,节点的存储的地址( ) 。A) 必须是不连续的 B) 连续与否均可C) 必须是连续的 D) 和头节点的存储地址相连续(22) 用链表表示线性表的优点是( ) 。A) 便于随机存取 B) 花费的存储空间比顺序表少 C) 数据元素的物理顺序与逻辑顺序相同 D) 便于插入与删除(23) 链表不具有的特点是( ) 。A) 插入、删除不需要移动元素 B) 可随机访问任一元素 C) 不必事先估计存储空间 D) 所需空间与线性长度成正比(24) 在长度为 n 的顺序表中删除第 i 个元素(1in)时,元素移动的次数为

6、( )。A) n-i+1 B) i C) i+1 D) n-i(25) 采用顺序搜索方法查找长度为 n 的顺序表示,搜索成功的平均搜索长度为( ) 。A) n B) n/2 C) (n-1)/2 D) (n+1)/2(26) 将长度为 n 的单链表链接在长度为 m 的单链表之后的算法的时间复杂度为( ) 。A) O(1) B) O(n) C) O(m) D) O(m+n)(27) 若不带头结点的单链表的头指针为 head,则该链表为空的判定条件是( )。A) head=NULL B) head-next=NULL C) head!=NULL D) head-next=head(28) 某线性表

7、中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。A) 单链表 B) 仅有头指针的单循环链表C) 双链表 D) 仅有尾指针的单循环链表(29) 若允许表达式内多种括号混合嵌套,则为检查表达式中括号是否正确配对的算法,通常选用的辅助结构是( ) 。A) 栈 B) 线性表 C) 队列 D) 二叉排序树(30) 顺序栈 S 中 top 为栈顶指针,指向栈顶元素所在的位置,elem 为存放栈的数组,则元素 e 进栈操作的主要语句为( ) 。A) s.elemtop=e; s.top=s.top+1; B) s.elemtop+1=e;s.top=s.t

8、op+1; C) s.top=s.top+1; s.elemtop+1=e; D) s.top=s.top+1;s.elemtop=e; (31) 循环队列 sq 中,用数组 elem025存放数据元素,sq.front 指示队头元素的前一个位置, sq.rear 指示队尾元素的当前位置,设当前 sq.front 为 20,sq.rear 为 12,则当前队列中的元素个数为( ) 。A) 8 B) 16 C) 17 D) 18(32) 链式栈与顺序栈相比,一个比较明显的优点是( ) 。A) 插入操作更加方便 B) 通常不会出现栈满的情况C) 不会出现栈空的情况 D) 删除操作更加方便(33)

9、一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程( ) 。A) 较快 B) 较慢 C) 相同 D) 不定(34) 若已知一个栈的入栈序列是 1,2,3,4n,其输出序列为 p1,p2,p3,pn,若 p1= =n,则 pi 为( ) 。A) i B) n= =i C) n-i+1 D) 不确定(35) 一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) 。A) edcba B) decba C) dceab D) abcde(36) 若进栈序列为 1,2, 3,4,5,6,且进栈和出栈可以穿插进行,则不可能出现的出栈序列

10、是( )。A) 2,4,3,1,5,6 B) 3,2,4,1,6,5C) 4,3,2,1,5,6 D) 2,3,5,1,6,4(37) 对于栈操作数据的原则是( ) 。A) 先进先出 B) 后进先出 C) 后进后出 D) 不分顺序(38) 栈和队列的共同点是( ) 。A) 都是先进先出 B) 都是先进后出 C) 只允许在端点处插入和删除元素 D) 没有共同点(39) 一个队列的入队序列是 1,2,3,4,则队列的输出序列是( ) 。A) 4,3,2,1 B) 1,2,3,4 C)1,4,3,2 D) 3,2,4,1(40) 设数组 datam作为循环队列 SQ 的存储空间,front 为队头指

11、针,rear 为队尾指针,则执行出对操作后其头指针front 值为( ) 。A) front=front+1 B) front=(front+1)%(m-1) C) front=(front-1)%m D) front=(front+1)%m(41) 引起循环队列队头位置发生变化的操作是 ( )。A) 出队 B) 入队 C) 取队头元素 D) 取队尾元素(2)设以数组 Am存放循环队列的元素,其头尾指针分别为 front 和rear,则当前队列中的元素个数为( )。A)(rear-front+m)%m B)rear-front+1 C)(front-rear+m)%m D)(rear-fron

12、t)%m(42) 二维数组 A1218采用列优先的存储方法,若每个元素各占 3 个存储单元,且 A00地址为 150,则元素 A97的地址为( )。A) 429 B) 432 C) 435 D) 438(43) 设有一个 10 阶的对称矩阵 A1010,采用压缩方式按行将矩阵中下三角部分的元素存入一维数组 B中,A00存入 B0中,则 A85在 B中( )位置。A) 32 B) 33 C) 41 D) 65(44) 若对 n 阶对称矩阵 A 以行序为主序方式将其下三角形的元素(包括主对角线上所有元素) 依次存放于一维数组B1(n(n+1)/2中,则在 B 中确定 aij(i, ,G 的拓扑序列

13、是( ) 。A) V1,V3,V4,V6,V2,V5,V7 B) V1,V3,V2,V6,V4,V5,V7C) V1,V3,V4,V5,V2,V6,V7 D) V1,V2,V5,V3,V4,V6,V7(81) 关键路径是事件结点网络中( ) 。A) 从源点到汇点的最长路径 B) 从源点到汇点的最短路径C) 最长回路 D) 最短回路(82) 有 n 个结点的有向完全图的弧数是( ) 。A) n2 B) 2n C) n(n-1) D) 2n(n+1)(83) 设图的邻接链表如题 12 图所示,则该图的边的数目是( ) 。A) 4 B) 5 C) 10 D) 20(84) 在一个图中,所有顶点的度数

14、之和等于图的边数的( )倍。A) 1/2 B) 1 C) 2 D) 4 (85) 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( )倍。83 题图A) 1/2 B) 1 C) 2 D) 4 (86) 有 8 个结点的无向图最多有( )条边。A) 14 B) 28 C) 56 D) 112 (87) 有 8 个结点的无向连通图最少有( )条边。A) 5 B) 6 C) 7 D) 8 (88) 有 8 个结点的有向完全图有( )条边。A) 14 B) 28 C) 56 D) 112 (89) 用邻接表表示图进行广度优先遍历时,通常是采用( )来实现算法的。A) 栈 B) 队列 C)

15、树 D) 图 (90) 用邻接表表示图进行深度优先遍历时,通常是采用( )来实现算法的。A) 栈 B) 队列 C) 树 D) 图 (91) 已知图的邻接矩阵,根据算法思想,则从顶点 0 出发按深度优先遍历的结点序列是( ) 。A) 0 2 4 3 1 5 6 B)0 1 3 6 5 4 2 C) 0 4 2 3 1 6 5 D) 0 3 6 1 5 4 2建议:0 1 3 4 2 5 60110010(92) 已知图的邻接矩阵同上题 8,根据算法,则从顶点0 出发,按深度优先遍历的结点序列是( ) 。A) 0 2 4 3 1 5 6 B) 0 1 3 5 6 4 2 C) 0 4 2 3 1

16、6 5 D) 0 1 3 4 2 5 6(93) 已知图的邻接矩阵同上题 8,根据算法,则从顶点0 出发,按广度优先遍历的结点序列是( ) 。A) 0 2 4 3 6 5 1 B) 0 1 3 6 4 2 5 C) 0 4 2 3 1 5 6 D) 0 1 3 4 2 5 6(建议:0 1 2 3 4 5 6)(94) 已知图的邻接矩阵同上题 8,根据算法,则从顶点0 出发,按广度优先遍历的结点序列是( ) 。A) 0 2 4 3 1 6 5 B) 0 1 3 5 6 4 2 C) 0 1 2 3 4 6 5 D) 0 1 2 3 4 5 6(95) 已知图的邻接表如下所示,根据算法, 则从顶

17、点 0出发 按深度优先遍历的结 点序列是( ) 。A) 1 3 2 B) 0 2 3 1 C) 0 3 2 1 D) 0 1 2 3(96) 已知图的邻接表如下所示,根据算法,则从顶点 0出发按广度优先遍历的结点序列是( ) 。A) 0 3 2 1 B) 0 1 2 3 C) 0 1 3 2 D) 0 3 1 2(97) 深度优先遍历类似于二叉树的( ) 。A) 先序遍历 B) 中序遍历 C) 后序遍历 D) 层次遍历(98) 广度优先遍历类似于二叉树的( ) 。A) 先序遍历 B) 中序遍历 C) 后序遍历 D) 层次遍历(99) 任何一个无向连通图的最小生成树( ) 。A) 只有一棵 B)

18、 一棵或多棵 C) 一定有多棵 D) 可能不存在(注,生成树不唯一,但最小生成树唯一,即边权之和或树权最小的情况唯一)(100) 在分析折半查找的性能时常常加入失败节点,即外节点,从而形成扩充的二叉树。若设失败节点 i 所在层次为 Li,那么查找失败到达失败点时所做的数据比较次数是( ) 。A) Li+1 B) Li+2 C) Li-1 D) Li (101) 向一个有 127 个元素原顺序表中插入一个新元素并保存原来顺序不变,平均要移动( )个元素。A) 8 B) 63.5 C) 63 D) 7 (102) 由同一组关键字集合构造的各棵二叉排序树 ( )。A) 其形态不一定相同,但平均查找长

19、度相同B) 其形态不一定相同,平均查找长度也不一定相同C) 其形态均相同,但平均查找长度不一定相同D) 其形态均相同,平均查找长度也都相同(103) 衡量查找算法效率的主要标准是( ) 。A) 元素的个数 B) 所需的存储量 C) 平均查找长度 D) 算法难易程度(104) 适合对动态查找表进行高效率查找的组织结构是( ) 。A) 有序表 B) 分块有序表 C) 二叉排序树 D) 快速排序(3)能进行二分查找的线性表,必须以( )。A) 顺序方式存储,且元素按关键字有序B) 链式方式存储,且元素按关键字有序C) 顺序方式存储,且元素按关键字分块有序D) 链式方式存储,且元素按关键字分块有序(1

20、05) 为使平均查找长度达到最小 ,当由关键字集合05,11,21,25,37,40,41,62,84构建二叉排序树时 ,第一个插入的关键字应为( )A) 5 B)37 C) 41 D) 62(106) 对关键字序列(56,23,78,92,88,67,19,34) 进行增量为 3 的一趟希尔排序的结果为 ( )。A) (19,23,56,34,78,67,88,92) B) 23,56,78,66,88,92,19,34)C) (19,23,34,56,67,78,88,92) D) (19,23,67,56,34,78,92,88)(107) 用某种排序方法对关键字序列35,84,21,4

21、7,15,27,68,25,20进行排序时,序列的变化情况如下:20,15,21,25,47,27,68,35,8415,20,21,25,35,27,47,68,8415,20,21,25,27,35,47,68,84则采用的方法是( )。A) 直接选择排序 B) 希尔排序 C) 堆排序 D) 快速排序(108) 一组记录的排序码为(46,79,56,38,40,84) ,则利用快速排序的方法,以第一个记录为基准得到的第一次划分结果为( ) 。A) 38,40,46,56,79,84 B) 40,38,46,79,56,84 C) 40,38,46,56,79,84 D) 40,38,46,

22、84,56,79(109) 快速排序在最坏情况下的时间复杂度是( )A) O(n2log2n) B) O(n2) C) O(nlog2n) D) O(log2n)(110) 下列排序算法中不稳定的是( ) 。A) 直接选择排序 B) 折半插入排序 C) 冒泡排序 D) 快速排序(111) 对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列进行同样的排序操作,直到子序列为空或只剩下一个元素为止。这样的排序方法是( ) 。A) 直接选择排序 B) 直接插入排序 C) 快速排序 D) 冒泡排序 (112) 将 5 个不同的数据进行排序,至多需要比较( )次。A) 8 B) 9 C)

23、 10 D) 25(113) 排序算法中,第一趟排序后,任一元素都不能确定其最终位置的算法是( ) 。A)选择排序 B)快速排序 C)冒泡排序 D)插入排序(114) 排序算法中,不稳定的排序是( ) 。A)直接插入排序 B)冒泡排序 C)堆排序 D)选择排序(115) 排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为( ).A) 希尔排序 B) 冒泡排序 C) 插入排序 D) 选择排序(116) 从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为( ) 。A) 希尔排序 B) 归并排序

24、C) 插入排序 D) 选择排序(117) 对个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。 ( )A) 从小到大排列好的 B) 从大到小排列好的C) 元素无序 D) 元素基本有序(118) 对个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为( ) 。A) n+1 B) n C) n-1 D) n(n-1)/2(119) 快速排序在下列哪种情况下最易发挥其长处。 ( )A) 被排序的数据中含有多个相同排序码 B) 被排序的数据已基本有序C) 被排序的数据完全无序D) 被排序的数据中的最大值和最小值相差悬殊(120) 对有 n 个记录的表作快速排序,在最坏情况下,算法的时间

25、复杂度是( ) 。A) O(n) B) O(n2) C) O(nlog2n) D) O(n3)(121) 若一组记录的排序码为( 46, 79, 56, 38, 40, 84) ,则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( ) 。A) 38, 40, 46, 56, 79, 84 B) 40, 38, 46 , 79, 56, 84 C) 40, 38,46, 56, 79, 84 D) 40, 38, 46, 84, 56, 79(122) 下列关键字序列中, ( )是堆。A) 16, 72, 31, 23, 94, 53 B) 94, 23, 31, 72, 16, 5

26、3 C) 16, 53, 23, 94,31, 72 D) 16, 23, 53, 31, 94, 72(123) 堆是一种( )排序。A) 插入 B) 选择 C) 交换 D) 归并(124) 堆的形状是一棵( ) 。 A) 二叉排序树 B) 满二叉树 C) 完全二叉树 D) 平衡二叉树(125) 若一组记录的排序码为( 46, 79, 56, 38, 40, 84) ,则利用堆排序的方法建立的初始堆为( ) 。A) 79, 46, 56, 38, 40, 84 B) 84, 79, 56, 38, 40, 46 C) 84, 79, 56, 46, 40, 38 D) 84, 56, 79,

27、 40, 46, 38 (126) 下述几种排序方法中,要求内存最大的是( ) 。A) 插入排序 B) 快速排序 C) 归并排序 D) 选择排序(127) 有一组数据(15,9, 7,8,20,-1,7,4) ,用堆排序的筛选方法建立的初始堆为( ) 。A) -1,4,8,9,20,7,15,7 B) -1,7,15,7,4,8,20,9C) -1,4,7,8,20,15,7,9 D) A,B,C 均不对。(128) 51下列四个序列中,哪一个是堆( ) 。 A) 75,65,30,15,25,45,20,10 B) 75,65,45,10,30,25,20,15C) 75,45,65,30,

28、15,25,20,10 D) 75,45,65,10,25,30,20,15(129) 以下序列不是堆的是( )。A) (100,85,98,77,80,60,82,40,20,10,66) B) (100,98,85,82,80,77,66,60,40,20,10)C) (10,20,40,60,66,77,80,82,85,98,100) D) (100,85,40,77,80,60,66,98,82,10,20)(130) 快速排序方法在( )情况下最不利于发挥其长处。A) 要排序的数据量太大 B) 要排序的数据中含有多个相同值C) 要排序的数据个数为奇数 D) 要排序的数据已基本有序(

29、131) 对关键码序列 28,16 ,32,12,60,2,5,72 快速排序,从小到大一次划分结果为( ) 。A) (2,5,12,16)26(60,32,72) B) (5,16,2,12)28(60,32,72)C) (2,16,12,5)28(60,32,72) D) (5,16,2,12)28(32,60,72)(132) 对下列关键字序列用快速排序法进行排序时,速度最快的情形是( ) 。A) 21,25,5,17,9,23,30 B)25,23,30,17,21,5,9C) 21,9,17,30,25,23,5 D) 5,9,17,21,23,25,30二、填空题(133) 数据结

30、构是一门研究非数值计算的程序设计问题中计算机的 操作对象 以及它们之间的 关系 和运算等的学科。(134) 数据结构被形式地定义为(D, R),其中 D 是 数据元素 的有限集合,R 是 D 上的 关系 有限集合。(135) 数据结构包括数据的 逻辑结构 、数据的 存储结构 和数据的 运算 这三个方面的内容。(136) 数据结构按逻辑结构可分为两大类,它们分别是 线性结构 和 非线性结构 。(137) 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。(138) 在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1 个前驱结点;

31、最后一个结点 没有 后续结点,其余每个结点有且只有 1 个后续结点。(139) 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。(140) 在图形结构中,每个结点的前驱结点数和后续结点数可以 任意多个 。(141) 数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。(142) 数据的运算最常用的有 5 种,它们分别是插入 、 删除、修改、查找 、排序。(143) 一个算法的效率可分为 时间 效率和 空间 效率。(144) 对于给定的 n 个元素,可以构造出的逻

32、辑结构有 集合,线性表,树,图四种。(145) 顺序映象的特点是借助元素在存储器中的 相对位置来表示数据元素之间的逻辑关系。非顺序映象的特点是借助是指示元素存储地址的 指针表示数据元素之间的逻辑关系。任何一个算法的设计取决于选定 逻辑结构,而算法的实现依赖于采用的 存储结构。(146) 数据类型是一组_性质相同的值集合以及定义在这个值集合上的一组操作的总称。(147) 数据对象是_性质相同的数据元素的集合,是数据的一个子集。(148) 如果操作不改变原逻辑结构的“值”,而只是从中提取某些信息作为运算结果,则称该类运算为 型运算。引用(149) 算法的 健壮特性是指做为一个好的算法,当输入的数据

33、非法时,也能适当地做出正确反应或进行相应的处理,而不会产生一些莫名其妙的输出结果。(150) 算法分析不是针对实际执行时间的精确的算出算法执行具体时间的分析,而是针对算法中语句的 执行次数做出估计,从中得到算法执行时间的信息。(151) T(n)=O(f(n),它表示随问题规模 n 的增大算法的执行时间的增长率和 f(n)的增长率 相同,称作算法的渐进时间复杂度,简称时间复杂度。(152) 若算法执行时所需要的辅助空间相对于输入数据量而言是个常数,则称这个算法为 原地工作,辅助空间为 O(1)。(153) 在带有头结点的单链表中 L 中,第一个元素结点的指针是 。L-next(154) 在一个

34、带头节点的单循环链表中,p 指向尾结点的直接前驱,则指向头结点的指针 head 可用 p 表示为 head= 。p-next-next(155) 设单链表的结点结构为(data,next),next 为指针域,已知指针 px 指向单链表中 data 为 x 的结点,指针 py 指向 data 为 y 的新结点 , 若将结点 y 插入结点 x 之后,则需要执行以下语句: py-next=px-next; px-next=py。(156)对于栈操作数据的原则是 。后进先出(157)设以数组 Am存放循环队列的元素,其头尾指针分别为 front和 rear,则当前队列中的元素个数为 。(rear-f

35、ront+m)%m(158) 若已知一个栈的入栈序列是 1,2,3,4n,其输出序列为p1,p2,p3,pn,若 p1= =n,则 pi 为 。n-i+1 (159) 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。(160) 通常程序在调用另一个程序时,都需要使用一个 栈来保存被调用程序内分配的局部变量。形式参数的存储空间以及返回地址。(161) 栈下溢是指在_栈空_时进行出栈操作。(162) 用 P 表示入栈操作,D 表示出栈操作,若元素入栈的顺序为1234,为了得到 1342 出栈顺序,相应的 P 和 D 的操作串为_ 。PDPPDPDD(163) 在具有 n

36、 个单元的循环队列中,队满共有 n-1 个元素。(164) 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。(165) 循环队列的引入,目的是为了克服_假溢出。(166) 所谓稀疏矩阵指的是_非零元很少(tnext; h-next=NULL;while(1)_)q=p; p=p-next; q-next=h-next; h-next=(2)_; (1)p!=null 链表未到尾就一直作(2)q 将当前结点作为头结点后的第一元素结点插入(236) 下面是用 c 语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用 L 返回逆置后的链表的头指针,试在空缺处填入适当

37、的语句。void reverse(linklist q-next=p;p=q;(2)_ ; (3)_;(1) L=L-next; 暂存后继(2)q=L; 待逆置结点(3)L=p; 头指针仍为 L(237) 以下算法的功能是用头插法建立单链表的算法,请填空完善之。Linklist CreateFromHead( ) LinkList L;Node *s;char c;L=(Linklist)malloc(sizeof(Node); /*为头结点分配存储空间*/L-next=NULL ;While( ( c=getchar() !=* ) s=(Node*)malloc(sizeof(Node);

38、 /*为读入的字符分配存储空间*/s-data=c;s-next=L-next ;L-next=s ;return L; (238) 以下算法的功能是尾插法创建链表,请填空完善之。typedef struct Node /*结点类型定义*/ char data;struct Node * next; Node, *LinkList; /* LinkList 为结构指针类型*/Linklist CreateFromTail( ) /*将新增的字符追加到链表的末尾*/ LinkList L;Node *r, *s;char c; L=(Node * )malloc(sizeof(Node); /*

39、为头结点分配存储空间*/L-next=NULL; r=L; /*r 指针指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/while( ( c=getchar() !=$ ) /*当输入$时,建表结束*/ s=(Node*)malloc(sizeof(Node); s-data=c; ;r-next=s; r=s; ; r-next=NULL /*将最后一个结点的next 链域置为空,表示链表的结束*/return L; /*CreateFromTail*/ (239) 下列算法在顺序表 L 中依次存放着线性表中的元素,在表中查找与 e 相等的元素,若 L.elemi=e,则找到该元素,

40、并返回 i+1,若找不到,则返回“-1” ,请填空完善之。int Locate(SeqList L,int e) i=0 ; /*i 为扫描计数器,初值为0,即从第一个元素开始比较*/while (ilast+1,i 的合法取值范围是 1iL-last+2,请填空完善之。 void InsList(SeqList *L, int i, int e) int k;if(iL-last+2) printf(“插入位置 i 值不合法”);if(L-last=maxsize-1) printf(“表已满无法插入”);for(k=L-last;k=i-1;k-) /*为插入元素而移动位置*/L-elem

41、k+1=L-elemk ;L-elemi-1=e ; /*在 C 语言数组中,第 i 个元素的下标为 i-1*/L-last+ ;(241) 下列算法是在顺序表 L 中删除第 i 个数据元素,并用指针参数e 返回其值。i 的合法取值为 1iL.last+1,请填空完善之。int DelList(SeqList *L, int i, int *e) int k;if(i L-last+1 ) printf(“删除位置不合法!”);*e= L-elemi-1 ; /* 将删除的元素存放到 e 所指向的变量中*/for(k=i;ilast;k+)L-elemk-1= L-elemk ; /*将后面的元素依次前移*/L-last- ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 试题课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报