南昌大学 2008~2009学年第二学期数据结构期末考试标准答案A

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第 6 页 共 7页
2. 两个字符数组 s,t 中各放有一个串, 尝试编写算法, 将所有 t 中含有而 s 中没有的 字符加到 s 中(逐个加到 s 的后面) 。 (8 分) typedef struct { char data[100]; int length; } LIST; tAddTost(LIST *s,LIST *t) { int i,j,op; for(i=0; i<t->length; ++i) { op=0; for(j=0; j<s->length; ++j) if(s->data[j] == t->data[i] op++; if(op==0) {s->data[j+1] = t->data[i]; ++s->length;} } }
四、
程序填空题(共 15 分)
评阅人
得分
1、已知 QUEUE 表示循环队列的数据结构,函数 leavequeue 是将队头元素的值放入变 量 e,然后删除队头元素,操作成功返回 1,否则返回 0。完成以下程序。 (10 分) typedef struct { int data[100]; int front; /*队头元素的下标*/ int rear; /*等于队尾元素的下标加 1*/ }QUEUE; leavequeue(QUEUE *Q,int *e) { if(Q->front==Q->rear ) { return 0; } *e = Q->data[Q->front]; Q->front = return 1; } 2. 已知一个单链表的表头指针 为 h,每个结点含元素值 data 和下一结点的地址 next。 链表一共有 5 个结点,其元素值分别为 100,200,300,400,500,经过下列语句后, 输出什么结果?(本题 5 分) for(p=h; p->data<300; p=p->next) { p->next = p->next->next; } printf(“%d”,p->data); 300 ;
A B D F G ? 1 E C
D
B
A
F
G
E
C
3、已知 5 个结点的权值分别是 4,6,1,13,7,请画出这结点构成的 Huffman 树。 (5 分)
31 13 7 5 1 4 18 11 6
第 3 页 共 7页
4、已知图 2 是一个无向图: (1)画出该无向图的邻接链表。 (5 分) (2)基于你给出的邻接链表,求从顶点 C 出发的广度优先遍历。 (5 分)
第 1 页 共 7页
二、 判断题(每题 1 分,共 10 分,对的打√,错的打×)
得分 评阅人
1、如果某数据结构的每一个元素都最多只有一个直接前驱和一个直接后继结点, 则必 为线性表。 (× ) 2、快速排序法在最坏的情况下时间复杂度是 O(n2) 。 (√ ) 3、若有一个叶子结点是某子树的中序遍历的最后一个结点, 则它必须是该子树的先序 遍历的最后一个结点。 (× ) 4、有向图的邻接矩阵的第 i 行的所有元素之和等于第 i 列的所有元素之和。 ( × ) 5、二叉排序树中,任一结点的值都大于或等于其孩子的值。 (× ) 6、一棵二叉排序树,根元素不一定是值最大的元素。 (√ ) 7、顺序栈进栈操作时,一般情况下需要判断栈是否已满。 (√ ) 8、如果某排序算法是稳定的,那么该方法一定具有实际应用价值。 (× ) 9、对长度为 100 的有序线性表用二分法查找时,最小比较次数为 0。 (× ) 10、进栈、出栈操作的时间复杂度为 O(1) 。 (√ )
第 5 页 共 7页
五、 编程题(共 15 分)
得分 评阅人
1.编写算法,删除顺序表前面的 10 个元素。如果顺序表中的元素少于 10 个,则删完 为止。 (7 分) 已知顺序表的数据结构如下: typedef struct { int elem[100]; int length; } SQ; int delete(SQ *s) { int i; if(s->length <= 10) { s->length = 0; retrun 0; } for(i=0; i<length-10; ++i) { s->elem[i] = s->elem[i+10]; } s->length -= 10; return 0; }
3、在一个长度为 n 的顺序表中插入一个元素,最少需要移动 0 个元素,最多需要移 动 n 个元素。 4、如果指针 p 指向一棵二叉树的一个结点,则判断 p 没有左孩子的逻辑表达式为 p->lchild==NULL 。 5、一个无向连通图有 6 个顶点 7 条边,则其生成树有 5 条边。 6、如果一个有向图有 5 个顶点,则它最多有 20 条弧。 7、如果某有向图的所有顶点可以构成一个拓扑排序序列,则说明该有向图 无 环 。 8、顺序存储的队列如果不采用循环方式,则会出现虚溢出问题。
D E F
(1)
C G A
B ? 2
(2)C A
D
B
G
F
E
5、 (1)根据线性表(23,49,28,10,30,5,16) ,画出二叉排序树。 (5 分) (2)根据上述二叉排序树,查找数 7,需要比较哪几个数?(5 分) (1)
23 10 5 16 28 30
(2)23 10 5
49
第 4 页 共 7页
九 十
总分 100
累分人 签名

考生注意事项:1、本试卷共 7 页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更 换。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
一、 填空题(每空 2 分,共 20 分)
得分 评阅人
1、数据结构有线性结构、树结构、图结构、集合结构等几种逻辑结构。 2、已知某算法的执行时间为(n+n2)/2+log2(2n+1),n 代表问题规模,则该算法的时间复杂度是 O(n2) 。
第 2 页 共 7页
三、 简答题(共 40 分)
得分 评阅人
1、排序。 (1)写出线性表(26,45,12,2,30,6,15,29,16,2,18)采用快速算法排序 后,第一趟结束时的结果。 (5 分) 20 12 26 45 30
(2)线性表采用插入排序算法排序几趟后,有序部分是(16,20,40) ,无序部分是 (18,25) ,则下一趟的排序需要移动几个元素?写出下一趟结束时的结果。 (5 分) 16 18 20 40,需移动 2 个元素 2、给出如图 1 所示的二叉树的中序遍历结果。 (5 分)
南昌大学 2008~2009 学年第二学期期末考试试卷
试卷编号: 课程编号: 课程名称: 数据结构考试形式: 姓名: 计算机科学与技术
五 15 六 七 八
( A )卷
闭卷 班级:
适用班级: 计算机系 07 级 学院: 信息工程学院 专业:
题号 题分 得分 一 20 二 10 三 40 四 15
学号: 考试日期:
第 7 页 共 7页
相关文档
最新文档