谁有自考数据结构02331pdf下载视频讲解,麻烦给一个

看了本文的网友还看了欢迎来到求学快递网!
网站公告:
所有课程分类
自考计算机网络有那些考试科目?西华师范大学
上传时间: 14:56:14
上传用户:
四川 - 成都
0.1年求学年龄
开课日期:随到随学/常年招生
上课时间:自由安排
授课学校:
上课地点:四川成都成都市金牛区二环路西三段49号
求学价:面议
已有6人浏览
特色服务:
咨询电话:
您的姓名:
您的手机:
想学什么:
&本专业旨在培养德智体全面发展,具有良好的综合素质,掌握计算机网络专业知识技术,能从事计算机网络安装、调试、运行、维护及管理,以及企事业单位信息化建设工作,适应企事业单位生产、管理、经营、服务一线需要的高等应用型技术人才。考试科目:组类型课程课程名称学分组总学分组应修学分课程类型教材备注必考组00023高等数学(工本)103030统考课高等数学(工本)02335网络操作系统5网络操作系统02379计算机网络管理3计算机网络管理04741计算机网络原理4计算机网络原理04742通信概论5通信概论04751计算机网络安全3计算机网络安全选考一组00000毕业考核(或论文综合实践实验实习等)103333校考课02331数据结构3数据结构02332数据结构(实验)1实践课数据结构(实验)03142互联网及其应用4校考课互联网及其应用103始调整为校03143互联网及其应用(实践)1实践课互联网及其应用实验04735数据库系统原理4校考课数据库系统原理04736数据库系统原理(实践)2实践课04747Java语言程序设计(一)3校考课Java语言程序设计(一)103始调整为校04748Java语言程序设计(一)(实践)1实践课04749网络工程4校考课网络工程选考三组00015英语(二)142713统考课英语(二)自学教程00900网页设计与制作2校考课网页设计与制作不考英语加考00901网页设计与制作(实践)3实践课02333软件工程3校考课软件工程不考英语加考02334软件工程(实验)1实践课软件工程实验02369计算机通信接口技术3校考课计算机通信接口技术不考英语加考02370计算机通信接口技术(实验)1实践课计算机通信接口技术实验选考七组00005马克思主义政治经济学原理373校考课马克思主义政治经济学原理03709马克思主义基本原理概论4马克思主义基本原理概论选考八组00004毛泽东思想概论242统考课毛泽东思想概论03708中国近现代史纲要2校考课中国近现代史纲要主考院校:西华师范大学考试科目:必考组为统考科目,选考组为校考科目。考试时间:统考 4.10月,校考12.6月。报名方式:电话联系肖老师&
已有2人浏览
开课日期:随到随学
已有2人浏览
开课日期:随到随学
已有4人浏览
开课日期:随到随学
已有6人浏览
开课日期:
已有2人浏览
开课日期:随到随学
已有10人浏览
开课日期:随到随学
成都成都职畅教育,专注社会在职人员学历提升,建筑类培训报名,教师资格证培训,统招专升本等考试辅导机构,以强大的师资力量、优质的服务和领先的过关率得到了各地考生的一致认可。近年来不断深化合作,先后和四川农业大学,西南财经大学,西南科技大学,西华师范大学,绵阳师范大学,西南大学,成都学院等高校进行合作合作招生培训项目。
免责声明:
本站为免费网络服务提供商,为注册用户提供免费信息存储空间服务,网站所有信息均为用户自行发布并由用户承担相应法律责任,本站不对用户发布的信息进行修改及审核,不对发布信息的真实性及合法性负责,如涉及侵权或者信息违法的请你及时与本站联系进行删除以保障你的合法权益。
四川成都成都市金牛区二环路西三段49号
查询学校路线
选择出行方式: 公交
选择出发地:查询
普通会员 1年
机构人气度:20
信用档案:
站内注册:
课程总数:共32个
主营业务:学历提升:自考,成教,网教,电大学历,职业资格证,教师资格证培训等。
咨询老师:肖老师
new新闻资讯
new求学资讯
top培训头条
go猜你喜欢
6月南京 济南举办根骶能量健康按摩疗法实战临床应用高级研修班
人气度:6902
7月重庆邱雅昌台湾董氏奇穴班
人气度:6540
10月赵梓浩中医正骨弓弦应力矫正术培训
人气度:4530
黄焖牛肉在贵州拿了可以学到?
油炸面食类食品的学习需要多久?贵州哪里可以学
hot您的足迹
微信扫描二维码,马上联系商家
1、微信扫描二维码
2、关注“求学快递网”公众号
3、点击给商家留言
您的姓名:
您的手机:
想学什么:
官方微信公众号
扫描二维码关注公众号
反馈类型:
问题描述:
您的联系方式:
客服电话:020-
选择举报类型
包含有害的内容
不规范转载
侵犯了我个人的权益
侵犯了我企业的权益
填写并确认举报信息
为了确保问题能及时得到处理,请务必保证您提交的信息真实有效、清晰完整
*举报理由:
色情、暴力、血腥等违反法律法规的内容
辱骂、歧视、挑衅和诽谤等不友善信息
*举报描述:
截图证明:
您可以将举报信息的证明截图并复制粘贴在此,以便管理员更好的核实
填写并确认举报信息
为了确保问题能及时得到处理,请务必保证您提交的信息真实有效、清晰完整
*举报描述:
*原文链接:
联系方式:
截图证明:
您可以将举报信息的证明截图并复制粘贴在此,以便管理员更好的核实
当您发现本站有涉及个人的侵权内容时,建议您先尝试与当事人沟通解决问题。 如果您无法联系到当事人,您可通过此渠道提交举报诉求。
根据,您需要向我们提交您的个人信息,其中包括身份证明。如您确认已准备齐全,可点击下方按钮进入诉求提交页。
如果您举报的仅仅是辱骂等不友善内容,无需提交证明资料,可返回上一步点击【包含有害内容>辱骂、歧视、挑衅和诽谤等不友善信息】直接举报。
当您发现本站有涉及企业的侵权内容时,建议您先尝试与当事人沟通解决问题。如果您无法联系到当事人,您可通过此渠道提交举报诉求。
根据,您需要向我们提交您企业和个人的证明材料。如您确认已准备齐全,可点击下方按钮进入诉求提交页。
如果您举报的仅仅是辱骂等不友善内容,无需提交证明资料,可返回上一步点击【包含有害内容>辱骂、歧视、挑衅和诽谤等不友善信息】直接举报。
举报成功!
已经收到您的举报信息,我们会尽快核实并处理,感谢您的信任与帮助~&>&02331数据结构教材
02331数据结构教材
上传大小:27.64MB
自考02331数据结构教材扫描版。
涉及内容有:线性表、栈和队列、串、多维数组和广义表、树、图、排序、查找、文件等。
综合评分:5
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有4条
很棒,很详细
老版本 还是很不错了~~!!
好资料,比较清晰
综合评分:
积分/C币:4
综合评分:
积分/C币:1
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
02331数据结构教材
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
02331数据结构教材全国2013年1月高等教育自学考试数据结构试题课程代码:02331
来源:深圳自考网&&&&时间:
绝密★考试结束前
全国2013年1月高等教育自学考试
数据结构试题
课程代码:02331
请考生按规定用笔将所有试题的答案涂、写在答题纸上。
选择题部分
注意事项:
1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。
2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将&答题
纸&的相应代码涂黑。错涂、多涂或未涂均无分。
1.数据的逻辑结构可以分为
A.动态结构和静态结构&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.顺序结构和链式结构
C.线性结构和非线性结构&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.简单结构和构造结构
2.线性表是一个有限序列,组成线性表的基本单位是
A.数据项&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.数据元素
C.数据域&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.字符
3.栈中有a、b和c三个元素,a是栈底元素,c是栈顶元素,元素d等待进栈,则不可
能的出栈序列是
A.dcba&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.cbda
C.cadb&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.cdba
4.稀疏矩阵的三元组表是
A.顺序存储结构&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.链式存储结构
C.索引存储结构&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.散列表存储结构
5.已知广义表G,head(G)与tail(G)的深度均为6,则G的深度是
A.5&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.6
C.7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.8
6.下列编码集合中,属于前缀编码的一组是
A.{11,10,001,101,0001}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.{00,010,}
C.{11,01,001,}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.{0,10,110,1011}
7.如题7图所示二叉树的中序序列为
8.有向图中所有顶点入度之和与所有顶点出度之和的比是
A.1/2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.1
C.2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.4
9.含有n个顶点和e条边的有向图的邻接矩阵中,零元素的个数是
A.e&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.2e
C.n2-2e&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.n2-e
10.n个顶点的无向连通图,其生成树的边数为
A.n-l&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.n
C.n+l&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.nlogn
11.用自底向上的冒泡排序方法对序列(8,13,26,55,29,44)从大到小排序,第一趟排序需进行交换的次数为
A.2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.3
C.4&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.5
12.对序列(8,13,26,55,29,44)从小到大进行基数排序,第一趟排序的结果是
A.(13,44,55,26,8,29)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.(13,26,55,44,8,29)
C.(8,13,26,29,44,55)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.(29,26,8,44,55,13)
13.采用分块查找时,要求数据
A.块内有序&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.分块有序
C.分块无序&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.每块中数据个数必须相同
14.下列关于散列函数的说法正确的是
A.散列函数越复杂越好
B.散列函数越简单越好
C.用除余法构造的散列函数是最好的
D.在冲突尽可能少的情况下,散列函数越简单越好
15.下列关于m阶B树的叙述中,错误的是
A.每个结点至多有m棵子树
B.每个结点至多有m-1个关键字
C.所有的叶结点均在同一层上
D.根结点至少有棵子树
非选择题部分
注意事项:
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共10小题,每小题2分,共20分)
16.算法的时间复杂度与实现时采用的程序设计语言____________。
17.在长度为n的顺序表的第i(1&i&n)个元素之后插入一个元素时,需向后移动___________个元素。
18.设循环队列存放在向量data[0..m-l]中,在出队操作后,队头指针front变化为___________。
19.树的前序遍历序列等同于该树对应二叉树的____遍历序列。
20.一个100&90的整型稀疏矩阵有10个非零元素,设每个整型数占2个字节,则用三元组表存储该矩阵时,所需的字节数是___________。
21.当用二叉链表作为n个结点的二叉树的存储结构时,空指针域的个数是____。
22.采用邻接表表示n个顶点的有向图时,若表结点的个数为m,则该有向图的边数
为___________。
23.对同一个基本有序的待排序列分别进行堆排序、快速排序和冒泡排序,最省时间的
算法是___________。
24.在16个记录的有序顺序表中进行二分查找,最大比较次数是___________。
25.在排序算法中,若排序前后具有相同关键字的记录之间的相对次序保持不变,则称这种排序方法是___________的。
三、解答题(本大题共4小题,每小题5分,共20分)
26.在定义顺序表时,存放表结点的向量空间不宜过大也不宜过小,为什么?
27.画出题27图所示树的孩子链表。
28.已知一个无向图G如题28图所示,以顶点①为根,且小序号优先,分别画出G的深度优先生成树和广度优先生成树。
29.判别以下序列是否为堆,若不是,将其调整为大根堆,并画出大根堆。
①(1,5,7,20,18,8,10,40)
②(18,9,5,8,4,17,21,6)
四、算法阅读题(本大题共4小题,每小题5分,共20分)
30.单链表类型定义如下:
typedef& struct& node {
struct& node&& *
typedef& ListNode& *LinkL
阅读下列算法,并回答问题:
void& f30 (LinklList& head,& DataType& x)
{& ∥head是带头结点的非空单链表的头指针
ListNode&& *p,& *q;
while(p-&next-&next)
q=(ListNode*) malloc (sizeof(ListNode));
q-&data=x;
q-&next=p-&
p-&next=q;
(1)该算法的功能是什么?
(2)若单链表的长度为n,算法的时间复杂度是多少?该时间复杂度和链表的初始状态有关吗?
31.阅读下列算法(假设栈的操作函数都已定义),并回答问题:
void& f31 (&& )
{&&& SeqStack& S;
char& x, y;
Push (&S,x);
Push (&S,&a&);
Push (&S,y);
x=Pop(&S);
Push(&S,&t&);
Push(&S,x);
x=Pop(&S);
Push(&S,&s&);
while& ( !StackEmpty(&S))
{&& y=Pop (&S);
putchar (y);
putchar (x);
(1)自底向上写出执行while语句之前栈S中的元素序列。
(2)写出该函数的最后输出结果。
32.下列算法的功能是在中序线索树中查找结点*p的前趋,填上适当内容使算法完整。
typedef& enum& { Link,Thread }& PointerT
∥ 枚举值Link和Thread分别为0和1
typedef& struct& node {
PointerTag& ltag,&
Struct& node& *lchild,& *
BinThrNode*f32 (BinThrNode& *p)
{ ∥ 在中序线索树中找结点*p的中序前趋,设p非空
BinThrNode& *q;
if(p-&ltag==Thread) &&&&&(1)&&&& ;
q=p-&lchild;
while(q-&rtag=Link) &&&&&&&(2)&&&&&&& ;
return q;
33.分析下列排序算法中语句1和语句2的频度以及此算法的时间复杂度,并指出该算法是属于哪一种排序方法。
void& f33( int& a[ ],int& n )
{& int& i,j,k,t;
for& (i=0;i&n;i++)&&&&&&&&&&&&&&&&&&&& ∥语句1
for& (k=j+1;k&=n;k++)
if& (a[k]&a[j])& j=k;&&&&&&&&&&&& ∥语句2
t=a[i];& a[i]=a[j];a[j]=t;
五、算法设计题(本题10分)
34.二叉排序树的类型定义如下:
typedef& struct& node {
struct& node& *lchild,*
}*BSTree;
编写递归算法从小到大输出二叉排序树T中所有data域值大于m且小于n的数据。
函数原型为void& f34(BSTree& T, int& m, int& n)
试题word文档下载:
最近更新内容:
& 深圳自考网(m.szzikao.net)当前位置: >>
全国自学考试数据结构试题02331试题及答案
全国 2011 年 1 月自学考试数据结构试题课程代码:02331一、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.下列选项中与数据存储结构无关的术语是( A.顺序表 C.链队列 B.链表 D.栈 B ) D )P32.将两个各有 n 个元素的有序表归并成一个有序表,最少的比较次数是( A.n-1 C.2n-1 B.n D.2n3.已知循环队列的存储空间大小为 m,队头指针 front 指向队头元素,队尾指针 rear 指向队尾元素的下一个位置,则 向队列中插入新元素时,修改指针的操作是( A.rear=(rear-1)%m; C.front=(front-1)%m; D )B.front=(front+1)%m; D.rear=(rear+1)%m; A )4.递归实现或函数调用时,处理参数及返回地址,应采用的数据结构是( A.堆栈 C.队列 B.多维数组 D.线性表5.设有两个串 p 和 q,其中 q 是 p 的子串,则求 q 在 p 中首次出现位置的算法称为( A.求子串 C.串匹配 B.串联接 D.求串长 B )P67C)6.对于广义表 A,若 head(A)等于 tail(A),则表 A 为( A.( ) C.(( ),( )) B.(( )) D.(( ),( ),( ))7.若一棵具有 n(n&0)个结点的二叉树的先序序列与后序序列正好相反,则该二叉树一定是 ( A.结点均无左孩子的二叉树 C.高度为 n 的二叉树 B.结点均无右孩子的二叉树 D.存在度为 2 的结点的二叉树 B )P73 C )8.若一棵二叉树中度为 l 的结点个数是 3,度为 2 的结点个数是 4,则该二叉树叶子结点的个数是( A.4 C.7 9.下列叙述中错误的是( C ) B.5 D.8A.图的遍历是从给定的源点出发对每一个顶点访问且仅访问一次 P107 B.图的遍历可以采用深度优先遍历和广度优先遍历 第 1 页 C.图的广度优先遍历只适用于无向图 D.图的深度优先遍历是一个递归过程 10.已知有向图 G=(V,E),其中 V={V1,V2,V3,V4},E={&V1,V2&,&V1,V3&,&V2,V3&,&V2,V4&,&V3, V4&},图 G 的拓扑序列是( A.V1,V2,V3,V4 C.V1,V3,V4,V2 ) B.V1,V3,V2,V4 D.V1,V2,V4,V3 C )P136 P164 8-211.平均时间复杂度为 O(n log n)的稳定排序算法是( A.快速排序 C.归并排序 B.堆排序 D.冒泡排序12.已知关键字序列为(51,22,83,46,75,18,68,30),对其进行快速排序,第一趟划分完成后的关键字序列是 ( D ) B.(30,18,22,46,51,75,83,68) D.(30,22,18,46,51,75,68,83)A.(18,22,30,46,51,68,75,83) C.(46,30,22,18,51,75,68,83)13.某索引顺序表共有元素 395 个,平均分成 5 块。若先对索引表采用顺序查找,再对块中元素进行顺序查找,则在 等概率情况下,分块查找成功的平均查找长度是( A.43 C.198 B.79 D.200 B )即 B-树的高度 即 树的高度 A )14.在含有 10 个关键字的 3 阶 B-树中进行查找,至多访问的结点个数为( A.2 C.4 B.3 D.5 A )P21315.ISAM 文件系统中采用多级索引的目的是( A.提高检索效率 C.减少数据的冗余B.提高存储效率 D.方便文件的修改二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.数据结构由数据的逻辑结构、存储结构和数据的_运算___________三部分组成。 17.在单链表中某结点后插入一个新结点,需要修改_______2________个结点指针域的值。 18.设栈 S 的初始状态为空,若元素 a、b、c、d、e、f 依次进栈,得到的出栈序列是 b、d、c、f、e、a,则栈 S 的 容量至少是_______3_________。 19.长度为零的串称为______空串__________。 20.广义表 G=(a,b,(c,d,(e,f)),G)的长度为________4________。 21.一棵树 T 采用孩子兄弟链表存储,如果树 T 中某个结点为叶子结点,则该结点在二叉链表中所对应的结点一定 是______左右指针域均为空__________。 第 2 页 22.一个有 n 个顶点的无向连通图,最少有_____n-1___________条边。 23.当待排关键字序列基本有序时,快速排序、简单选择排序和直接插入排序三种排序方法中,运行效率最高的是 _______直接插入排序_________。 24.在一棵深度为 h 的具有 n 个结点的二叉排序树中,查找任一结点的最多比较次数是______h________。 25.不定长文件指的是文件的______记录含有的信息长度______大小不固定。 三、解答题(本大题共 4 小题,每小题 5 分,共 20 分) 26.已知一棵二叉排序树(结点值大小按字母顺序)的前序遍历序列为 EBACDFHG, 请回答下列问题: (1) 画出此二叉排序树;(2) (3) 若将此二叉排序树看作森林的二叉链表存储,请画出对应的森林。27.已知有向图的邻接表如图所示,请回答下面问题: (1)给出该图的邻接矩阵; (2)从结点 A 出发,写出该图的深度优先遍历序列。第 3 页 28.已知待排记录的关键字序列为{25,96,11,63,57,78,44},请回答下列问题: (1)画出堆排序的初始堆(大根堆) ; (2)画出第二次重建堆之后的堆。29.已知关键字序列为(56,23,41,79,38,62,18),用散列函数 H(key)=key%11 将其散列到散列表 HT[0..10]中, 采用线性探测法处理冲突。请回答下列问题: (1)画出散列存储后的散列表: (2)求在等概率情况下查找成功的平均查找长度。四、算法阅读题(本大题共 4 小题,每小题 5 分,共 20 分) 30.阅读下列程序。 void { int i,j,m; for (i=1;i&n;i++) for (j=0;j&i;j++) { m=A[i*n+j]; A[i*n+j]=A[j*n+i]; A[j*n+i]=m; } } 回答下列问题: 第 4 页 f30(int A[], int n) ?1 ? (1)已知矩阵 B= ? 4 ?7 ?2 5 83? ? 6 ? ,将其按行优先存于一维数组 A 中,给出执行函数调 9? ?用 f30(A,3)后矩阵 B 的值;(2)简述函数 f30 的功能。31.假设以二叉链表表示二叉树,其类型定义如下: typedef struct node { struct node*Ichild, * } *BinTree;∥左右孩子指针阅读下列程序。void f31(BinTree T) { InitStack(S); ∥ 初始化一个堆栈 S while { while { Push(S,T); } if { T=Pop(S); printf(“%c”,T-&data); } } } T=T-& (!StackEmpty(S)) T=T-& (T) (T||!StackEmpty(S)回答下列问题:(1)已知以 T 为根指针的二叉树如图所示,请写出执行 f31(T)的输出结果: 第 5 页 (2)简述算法 f31 的功能。32.阅读下列程序。 void { int i,j,m=l,t; for (i=0; i&n-l&&m; i++) { for (j=0; j&n; j++) printf(“%d ”,A[j]); printf(“\n”); m=0: for (j=1; j&n-i; j++) if (A[j-1]&A[j]) { t=A[j-l]; A[j-1]=A[j]; A[j]=t; m=1; } } } 回答问题: 已知整型数组 A[ ]={34,26,15,89,42},写出执行函数调用 f32(A,5)后的输出结果。 f32(int A[],int n)33.已知顺序表的表结构定义如下: #define MAXLEN 100 typedef int KeyT 第 6 页 typedef struct { KeyT InfoT } NodeType; typedef NodeType SqList[MAXLEN]; 阅读下列程序。 Int f33(SqList R,NodeType X, { if (p&q) return -1; m=(p+q)/2; if (R[m].key==X.key) int p, int q)if (R[m].key&X.key) return f33(R,X,p,m-l); else return f33(R,X,m+l,q); } 请回答下列问题: (1)若有序的顺序表 R 的关键字序列为(2,5,13,26,55,80,105),分别写出 X.key=18 和 X.key=26 时,执行函数调用 f33(R,X,0,6)的函数返回值。 (2)简述算法 f33 的功能。五、算法设计题(本题 10 分) 34.假设用带头结点的单循环链表表示线性表,单链表的类型定义如下: typedef struct node { struct node* }LinkNode,*LinkL 编写程序, 求头指针为 head 的单循环链表中 data 域值为正整数的结点个数占结点总数的比例, 若为空表输出 0, 并给出所写算法的时间复杂度。函数原型为: float f34(LinkList head):第 7 页 月自学考试数据结构 数据结构试题 全国 2010 年 10 月自学考试数据结构试题课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.数据的四种存储结构是( A )A.顺序存储结构、链接存储结构、索引存储结构和散列存储结构 B.线性存储结构、非线性存储结构、树型存储结构和图型存储结构 C.集合存储结构、一对一存储结构、一对多存储结构和多对多存储结构 D.顺序存储结构、树型存储结构、图型存储结构和散列存储结构 2.若对某线性表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,要使操作时间最少,下 列选项中,应选择的存储结构是( A.无头结点的单向链表 O(N) C.带头结点的双循环链表O(1) C ) B.带头结点的单向链表 O(N) D.带头结点的单循环链表O(N) B )3.若带头结点的单链表的头指针为head,则判断链表是否为空的条件是( A.head=NULL B.head-&next=NULL 第 8 页 C.head!=NULLD.head-&next!=head D )4.若元素的入栈顺序为1,2,3....,n,如果第2个出栈的元素是n,则输出的第i(1&=i&=n)个元素是( A.n-i C.n-i+2 5.串匹配算法的本质是( A.串复制 C.子串定位 C ) B.串比较 D.子串链接 B.n-i+l D.无法确定6.设有一个10阶的对称矩阵A,采用行优先压缩存储方式,a11为第一个元素,其存储地址为1,每个元素占一个字节 空间,则a85的地址为( A.13 C.33 C ) B.18 D.407.若一棵二叉树的前序遍历序列与后序遍历序列相同,则该二叉树可能的形状是( A.树中没有度为2的结点 C.树中非叶结点均只有左子树 B.树中只有一个根结点 D.树中非叶结点均只有右子树 A )B )8.若根结点的层数为1,则具有n个结点的二叉树的最大高度是( A.n C. +1 (完全二叉树) B. D.n/2 A9.在图G中求两个结点之间的最短路径可以采用的算法是( A.迪杰斯特拉(Dijkstra)算法 C.普里姆(Prim)算法为求最小生成树) (BC为求最小生成树) 为求最小生成树)B.克鲁斯卡尔(Kruskal)算法 D.广度优先遍历(BFS)算法10.下图G=(V,E)是一个带权连通图,G的最小生成树的权为( A.15 B.16 C.17 D.18D)11.在下图中,从顶点1出发进行深度优先遍历可得到的序列是( A.1 2 3 4 5 6 7 B.1 4 2 6 3 7 5 C.1 4 2 5 3 6 7 D.1 2 4 6 5 3 7B)第 9 页 12.如果在排序过程中不改变关键字相同元素的相对位置,则认为该排序方法是( A.不稳定的 C.基于交换的 B.稳定的 D.基于选择的B)13.设有一组关键字(19, 14, 23, 1,6,20, 4,27, 5,11, 10, 9),用散列函数H(key)=key%13构造散列表,用拉链法解 决冲突,散列地址为1的链中记录个数为( A.1 C.3 C B.2 D.4 )14.已知二叉树结点关键字类型为字符,下列二叉树中符合二叉排序树性质的是(D)15.若需高效地查询多关键字文件,可以采用的文件组织方式为( D A.顺序文件 C.散列文件 B.索引文件 D.倒排文件)二、填空题(本大题共10小题,每小题2分,共20分) 请每小题的空格中填上正确答案。错填、不填均无分。 16.下面程序段的时间复杂度为___________。 sum=1; for(i=0;sum&n;i++) sum+=1; 17.已知链表结点定义如下: typedef struct node{ char data[16]; struct node } LinkStrNode; 如果每个字符占1个字节,指针占4个字节,则该链表的存储密度是___________。 第 10 页 * 18.使用一个100个元素的数组存储循环队列,如果采取少用一个元素空间的方法来区别循环队列的队空和队满,约 定队头指针front等于队尾指针rear时表示队空。若为front=8,rear=7,则队列中的元素个数为___________。 19.3个结点可以组成___________种不同树型的二叉树。20.用5个权值{3, 2,4,5,1}构造的哈夫曼(Huffman)树的带权路径长度是___________。 21.若无向图G中有n个顶点m条边,采用邻接矩阵存储,则该矩阵中非0元素的个数为___________。 22.影响排序效率的两个因素是关键字的___________次数和记录的移动次数。 23.对任一m阶的B树,每个结点中最多包含___________个关键字。 24.若两个关键字通过散列函数映射到同一个散列地址,这种现象称为___________。 25.如果要为文件中的每个记录建立一个索引项,则这样建立的索引表称为___________。三、解答题(本大题共4小题,每小题5分,共20分) 26.要在[0..n-l]的向量空间中建立两个栈stackl和stack2,请回答: (1)应该如何设计这两个栈才能充分利用整个向量空间? (2)若stackl的栈顶指针为topl,stack2的栈顶指针为top2,如果需要充分利用整个向量空间,则: 栈stackl空的条件是:___________; 栈stack2空的条件是:___________; 栈stackl和栈stack2满的条件是:___________。27.已知广义表如下: A=(B,y) B=(x,L) L=(a,b) 要求: 第 11 页 (1)写出下列操作的结果 tail(A)=_______________. head(B)=______________。 (2)请画出广义表A对应的图形表示。28.已知二叉树如下:请画出该二叉树对应的森林。 29.请回答下列问题: (1)英文缩写DAG的中文含义是什么?(2)请给出下面DAG图的全部拓扑排序。第 12 页 四、算法阅读题(本大题共4小题,每小题5分,共20分) 30.已知线性表(a1,a2,a3...,an)按顺序存放在数组a中,每个元素均为整数,下列程序的功能是将所有小于0的元素移 到全部大于等于0的元素之前。例如,有7个整数的原始序列为(x,x,-x,-x,x,x,-x),变换后数组中保存的序列是 (-x,-x,-x,x,x,x,x)。请在程序处填入合适的内容,使其成为完整的算法。 f30(int a[],int n) { int k,m,temp; m= (1) ;while (a[m]&0 &&m&n) m= k=m; while (k&n) { while(a[k]&=0&&k&n) k= if(k&n) { temp=a[k]; a[k]=a[m]; a[m]= m= } } } (5) (4) ; ; (3) ; (2) ;(1) (2) (3) (4) (5) 31.阅读下列程序,并回答问题: #include&stdio.h& substr(char*t,char*s,int pos,int len) { while(len&0&&*s) { *t=*(s+pos-l); 第 13 页 t++;s++;len--; } *t='\0'; } char *f31(char*s) { char t[100]; if (strlen(s)=1)substr(t,s,1,1); substr(s,s,2,strlen(s)-1); f31(s); return strcat(s,t); } main( ) { char str[100]= ''String''; printf(''%s\n'',f31(str)); } (1)请写出执行该程序后的输出结果; (2)简述函数f31的功能。32.下面程序实现插入排序算法。 typedef struct{ Info }SeqL void InsertSort(SeqList R[],int n){/* 待排序列保存在R[1..n]中*/ SeqList x; int i,j,k,lo,hi, for (i=2;i&=n;i++) { (1) lo=1; 第 14 页 ; hi=i-l; while (lo&=hi) { mi=(lo+hi)/2; if ( (2) )if (R[mi].key&x.key) hi=mi-l; else lo=mi+l; } if (mi=lo) k=i - else k=i - mi-1; for (j=0;j&k;j++) (3) R[i-j]=x; } } 在空白处填写适当的内容,使该程序功能完整。 ;(1) (2) (3) 33.设有单链表类型定义如下: typedef struct node { struct node * } *LinkL 阅读下列算法,并回答问题: void { LinkList p=NULL; While (head !=NULL) { if (head-&data&A&&head-&data&B) p= 第 15 页 f33(LinkList head, int A, int B) head=head-& } if (p !=NULL) printf(&%d\n&,p-&data); } (1)已知链表h如下图所示,给出执行f33(h,5,8)之后的输出结果;(2)简述算法f33的功能。五、算法设计题(本题10分) 34.已知二叉树的定义如下: typedef struct node{ struct node *lchild, }*Bitptr; 编写递归算法求二叉树的高度。函数原型为:int f34(Bitptr t); *月自学考试数据结构试题 全国 2010 年 1 月自学考试数据结构试题课程代码:02331一、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.若一个算法的时间复杂度用 T(n)表示,其中 n 的含义是( A ) A.问题规模 B.语句条数 C.循环层数 D.函数数量 2.具有线性结构的数据结构是( C ) 第 16 页 A.树 B.图 C.栈和队列 D.广义表 3.将长度为 n 的单链表连接在长度为 m 的单链表之后,其算法的时间复杂度为( B ) A.O(1) B.O(m) C.O(n) D.O(m+n) 4.在带头结点的双向循环链表中插入一个新结点,需要修改的指针域数量是( C ) A.2 个 B.3 个 . C.4 个 D.6 个 5.假设以数组 A[60]存放循环队列的元素,其头指针是 front=47,当前队列有 50 个元素,则队列的尾指针值为 ( B ) A.3 B.37 C.50 D.97 6.若栈采用链式存储结构,则下列说法中正确的是( B ) A.需要判断栈满且需要判断栈空 B.不需要判断栈满但需要判断栈空 C.需要判断栈满但不需要判断栈空 D.不需要判断栈满也不需要判断栈空 7.若串 str=”Software”,其子串的数目是( D ) A.8 B.9 C.36 D.37 8.设有一个 10 阶的下三角矩阵 A,采用行优先压缩存储方式,all 为第一个元素,其存储地址为 1000,每个元素占 一个地址单元,则 a85 的地址为 ( C ) A.1012 B.1017 C.1032 D.1039 9.允许结点共享的广义表称为( D ) A.纯表 B.线性表 C.递归表 D.再入表 10.下列数据结构中,不属于二叉树的是( A ) A.B 树 B.AVL 树 C.二叉排序树 D.哈夫曼树 11.对下面有向图给出了四种可能的拓扑序列,其中错误的是( C ) ..A.1,5,2,6,3,4 B.1,5,6,2,3,4 C.5,1,6,3,4,2 D.5,1,2,6,4,3 12.以 v1 为起始结点对下图进行深度优先遍历,正确的遍历序列是(D )第 17 页 A.v1,v2,v3,v4,v5,v6,v7 C.v1,v2,v3,v4,v7,v5,v6 13.下列排序算法中不稳定的是( A.快速排序 C.冒泡排序B.v1,v2,v5,v4,v3,v7,v6 D.v1,v2,v5,v6,v7,v3,v4 A ) B.归并排序 D.直接插入排序14.一个有序表为(1,3,9,12,32,41,45,62,75,77,82,95,100),当采用折半查找方法查找值 32 时, 查找成功需要的比较次数是( B ) A.2 B.3 C.4 D.8 15.采用 ISAM 组织文件的方式属于( D ) A.链组织 B.顺序组织 C.散列组织 D.索引组织 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.数据元素及其关系在计算机存储器内的表示称为__数据的存储结构_______。 17.长度为 n 的线性表采用单链表结构存储时,在等概率情况下查找第 i 个元素的时间复杂度是___O(n)______。 18.下面是在顺序栈上实现的一个栈基本操作,该操作的功能是__取栈顶元素_______。 取栈顶元素_ typedef struct{ DataType data[100]; int top; }SeqStack; DataType f18(SeqStack*S) { if(StackEmpty(S)) Error(”Stack is empty”); return S-&data[S-&top]; } 19.在串匹配中,一般将主串称为目标串,将子串称为____模式串 模式串_____。 模式串 20.已知广义表 C=(a(b,c),d),则:tail(head(tail(C)))= ____(c)_____。 21.用 6 个权值分别为 6、13、18、30、7 和 16 的结点构造一棵哈夫曼(Huffman)树,该树的带权路径长度为 ___219______。 22.已知有向图如下所示,其中顶点 A 到顶点 C 的最短路径长度是____35_____。第 18 页 23. 对序列{55, 13, 94, 42}进行基数排序, 46, 05, 17, 第一趟排序后的结果是__{42,13,94,55,05,46,17}_______。 24.高度为 3 的 3 阶 B-树最少的关键字总数是____7_____。 + 25.VSAM 通常作为大型索引顺序文件的标准组织,其动态索引结构采用的是____B 树_____。 三、解答题(本大题共 4 小题,每小题 5 分,共 20 分) 26.假设二叉树的 RNL 遍历算法定义如下: 若二叉树非空,则依次执行如下操作: (1)遍历右子树; (2)访问根节点; (3)遍历左子树。 已知一棵二叉树如图所示,请给出其 RNL 遍历的结果序列。 GCFABD) (GCFABD) 27.已知一个无向图 G=(V,E),其中 V={A,B,C,D,E,F},邻接矩阵表示如下所示。请回答下列问题: (1)请画出对应的图 G。 (2)画出图 G 的邻接表存储结构。 (参考书 P104) 28.已知一组待排记录的关键字序列为(16,12,18,60,15,36,14,18,25,85),用堆排序方法建小根堆,请 给出初始建堆后的序列。 12,15,14,18,16,36,18,60,25,85) (12,15,14,18,16,36,18,60,25,85) 29.已知一棵二叉排序树如图所示。 请回答下列问题: (1)画出插入元素 23 后的树结构; (2)请画出在原图中删除元素 57 后的树结构。(在二叉排序树中对于插入元素,直接插入即可,删除元素时是删除其中序遍历的后继) 在二叉排序树中对于插入元素,直接插入即可,删除元素时是删除其中序遍历的后继) 其中序遍历的后继第 19 页 四、算法阅读题(本大题共 4 小题,每小题 5 分,共 20 分) 30.已知下列程序,Ls 指向带头结点的单链表。 Typedefstruct node { DataT struct node * } * LinkL void f30( LinkList Ls ) { LinkList p, q = Ls-& if ( q && q-&next ) { Ls-&next = q-& p=q while ( p-&next ) p = p-& p-&next = q-&next = NULL; } } 请回答下列问题: (1)当 Ls 指向的链表如下图所示,请画出执行本函数之后的链表的结果。(2)请简述算法的功能。23451 将单链表中第一个结点连接到原链表中最后一个结点31.已知字符串处理函数 f31 程序如下。 int f31(char*strl,char*str2) { while(*strl==*str2&&(*strl!=’\0’)){ strl++; str2++; } return(*strl-*str2 ? l∶0); } 请回答下列问题: (1) 若 调 用 语 句 是 f31(”abcde” , ”abcdf’) , 则 函 数 的 返 回 值 是 什 么 ? 若 调 用 语 句 是 f31(”abcde”,”abcde”),则函数的返回值是什么? (2)简述该函数的功能。(1)1,0 (2)比较两个字符串,相等返回 0,不相等返回 1. 比较两个字符串,32.数组 A[]中存储有 n 个整数,请阅读下列程序。 void f32(intA[],int n) { inti,j,k,x; k=n-l; while(k&0){ 第 20 页 i=k; k=0; for(j=O;j&i;j++) if(A[j]&A[j+1]){ x=A[j]; A[j]=A[j+l]; A[j+1]=x; k=j; }//end of if }//end of while return; } 请回答下列问题: (1)当 A[]={10,8,2,4,6,7}时,执行 f32(A,6)后,数组 A 中存储的结果是什么? (2)说明该算法的功能。(1)A【】={2,4,6,7,8,10} 【】={2,4,6,7,8,10} (2)将数组中的数据按从小到大排列33.下面程序实现二分查找算法。 Typedef struct{ KeyType key; InfoType otherinfo; }SeqList[N+1]; int BinSearch(SeqList R, int n,KeyType K) { int low=1,high=n; while( (1) ){ mid=(1ow+high)/2; if( (2) ) return mid; if(R[mid].key&K) high=mid-1; else (3) ; } return O; } //BinSearch 请在空白处填写适当内容,使该程序功能完整。(1)low&=high (1)low&=high (2)R[mid].key==k (2)R[mid].key==k (3)low=mid+1 (3)low=mid+1五、算法设计题(本题 10 分) 34.已知二叉树采用二叉链表存储,其结点结构定义如下: typedef struct Node{ ElmType data; struct Node *lchild,*rchild; }*BiTree; 第 21 页 请编写递归函数 SumNodes(BiTree T),返回二叉树 T 的结点总数。求解步骤: 求解步骤: 判断树是否为空, 判断树是否为空,如果为空返回 0 如果只有一个根节点, 否则结点数为左子树+右子数+1 如果只有一个根节点,返回 1,否则结点数为左子树+右子数+1 int SumNOde(BiTree) {if(T==NULL)return 0; if(lchild==NULL&&rchild==NULL) return 1; else SumNOde(TSumNOde (Treturn SumNOde(T-&lchild)+ SumNOde (T-&rchild)+1; }月自学考试数据结构试题 全国 2009 年 10 月自学考试数据结构试题课程代码:02331一、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.按值可否分解,数据类型通常可分为两类,它们是( C A.静态类型和动态类型 C.原子类型和结构类型3 2)B.原子类型和表类型 D.数组类型和指针类型2.对于三个函数 f(n)=2008n +8n +96000,g(n)=8n3+8n+2008 和 h(n)=8888nlogn+3n2 ,下列陈述中不 成立的是 . ( C ) B.g(n)是 0(f(n)) D.h(n)是 0(n2) )A.f(n)是 0(g(n)) C.h(n)是 0(nlogn)3.指针 p、q 和 r 依次指向某循环链表中三个相邻的结点,交换结点*q 和结点*r 在表中次序的程序段是( A A.p-&next=r; B.p-&next=r; C.r-&next=q; D.r-&next=q; q-&next=r-&next; r-&next=q; r-&next=q;q-&next=r-&next; p-&next=r;q-&next=r-&next; p-&next=r;q-&next=r-&next; B )4.若进栈次序为 a,b,c,且进栈和出栈可以穿插进行,则可能出现的含 3 个元素的出栈序列个数是( A.3 C.6 B.5 D.75.假设以数组 A[n]存放循环队列的元素,其头指针 front 指向队头元素的前一个位置、尾指针 rear 指向队尾元 素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为( A.rear= =front B.(front+1)%n= =rear 第 22 页 D ) C.rear+1= =front 6.串的操作函数 str 定义为: int str(char*s) { char *p=s; while (*p!=′\0′)p++; return p-s; } 则 str(″abcde″)的返回值是( A.3 C.5 C )D.(rear+1)%n= =frontB.4 D.67.二维数组 A[10] [6]采用行优先的存储方法,若每个元素占 4 个存储单元,已知元素 A[3] [4]的存储地址 为 1000,则元素 A[4] [3]的存储地址为( A.1020 C.1036 A )B.1024 D.1240 )8.对广义表 L= (a,())执行操作 tail(L)的结果是( B A.() C.a B.(()) D.(a)9.已知二叉树的中序序列和后序序列均为 ABCDEF,则该二叉树的先序序列为( A A.FEDCBA C.FDECBA B.ABCDEF D.FBDCEA)10.已知森林 F={T1,T2,T3,T4,T5},各棵树 Ti(i=1,2,3,4,5)中所含结点的个数分别为 7,3,5,l,2,则 与 F 对应的二叉树的右子树中的结点个数为( A.2 C.8 B.3 D.11 B ) D )11.若非连通无向图 G 含有 21 条边,则 G 的顶点个数至少为( . A.7 C.21 12.如图所示的有向图的拓扑序列是( A.c,d,b,a,e B.c,a,d,b,e C.c,d,e,a,b D.c,a,b,d,e B.8 D.22 B )13.对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第 1 个元素为基准的一次划分的结果为( A.(5,1,4,3,6,2,8,7) B.(5,1,4,3,2,6,7,8) 第 23 页C) C.(5,1,4,3,2,6,8,7)D.(8,7,6,5,4,3,2,1) )14.分块查找方法将表分为多块,并要求( B A.块内有序 C.各块等长 15.便于进行布尔查询的文件组织方式是( A.顺序文件 C.散列文件B.块间有序 D.链式存储 D ) B.索引文件 D.多关键字文件二、填空题(本大题共 10 小题,每小题 2 分,若有两个空格,每个空格 1 分,共 20 分) 请在每个空格中填上正确答案。错填、不填均无分。 16.数据的链式存储结构的特点是借助___指针_____表示数据元素之间的逻辑关系。 17.如果需要对线性表频繁进行___插入_____或____删除____操作,则不宜采用顺序存储结构。 删除 18.如图所示,可以利用一个向量空间同时实现两个类型相 件是 top1=0,栈 2 为空的条件是 top2=n-1,则“栈满” __top2+1=top1______。 同的栈。其中栈 1 为空的条 的 判 定 条 件 是19.静态存储分配的顺序串在进行插入、置换和___链接 ____等操作时可能发生越界。 链接_ 20.广义表 L=(a, (b,( )) )的深度为____3____。 21.任意一棵完全二叉树中,度为 1 的结点数最多为____1____。 22.求最小生成树的克鲁斯卡尔(Kruskal)算法耗用的时间与图中____边____的数目正相关。 23.在 5 阶 B-树中,每个结点至多含 4 个关键字,除根结点之外,其他结点至少含___2_____个关键字。 24.若序列中关键字相同的记录在排序前后的相对次序不变,则称该排序算法是____稳定 ___的。 稳定_ 25.常用的索引顺序文件是____ISAM____文件和___VSAM_____文件。 三、解答题(本大题共 4 小题,每小题 5 分,共 20 分) 26.如图所示,在 n×n 矩阵 A 中,所有下标值满足关系式 i+j<n+l 的元素 aij 的值均为 0,现将 A 中其它元素按行 优先顺序依次存储到长度为 n(n+1)/2 的一维数组 sa 中,其中元素 a1,n 存储在 sa[0] 。 (1)设 n=10,元素 a4,9 存储在 sa[p] ,写出下标 p 的值; (2)设元素 ai,j 存储在 sa[k]中,写出由 i,j 和 n 计算 k 的一般公式。 8aij=i(i-1)/2+i-n+j-127.由字符集{s,t,a,e,I}及其在电文中出现的频度构建的哈夫曼树如图所示。已知某段电文的哈夫曼编码为 第 24 页 ,请根据该哈夫曼树进行译码,写出原来的电文。eatst28.已知无向图 G 的邻接表如图所示, (1)画出该无向图; (2)画出该图的广度优先生成森林。29.对序列(48,37,63,96,22,31,50,55,11)进行升序的堆排序,写出构建的初始(大根)堆及前两趟重建堆之 后的序列状态。 初始堆:(96,55,63,48,22,31,50,37,11) 第 1 趟:(63,55,50,48,,22,31,11,37,96) 第 2 趟:(55,48,50,37,22.31,11,63,96) 四、算法阅读题(本大题共 4 小题,每小题 5 分,共 20 分) 30.阅读下列算法,并回答问题: (1)无向图 G 如图所示,写出算法 f30(&G)的返回值; 第 25 页 (2)简述算法 f30 的功能。 #define MaxNum 20 int visited[MaxNum]; void DFS(Graph *g,int i);/*从顶点 vi 出发进行深度优先搜索,访问顶点 vj 时置 visited[j]为 1*/ int f30(Graph { int i,k; for (i=0; i&g-&n; visited[i]=0; for (i=k=0; i&g-&n; i++) if (visited[i]= =0) { k++; DFS(g,i); } return k; }(1)3 (2)返回图中连通分量的个数 返回图中连通分量的个数*g)i++)/*g-&n 为图 g 的顶点数目*/31.假设学生成绩按学号增序存储在带头结点的单链表中,类型定义如下: typedef struct Node { int score; struct Node } LNode, /*学号*/ /*成绩*/ *next;*LinkList;阅读算法 f31,并回答问题: (1)设结点结构为 f31(A,B)后 A 所指的链表; ,成绩链表 A 和 B 如图所示,画出执行算法第 26 页 (2)简述算法 f31 的功能。 void f31(LinkList A, LinkList B){ LinkList p, p=A-& q=B-& while (p && q) { if (p-&id&q-&id) p=p-& else if (p-&id&q-&id) q=q-& else { if (p-&score&60) if (q-&score&60) p-&score=q-& else p-&score=60; p=p-& q=q-& } } }链 A 链 B 中相同学号的成绩均小于 60 的把 B 的成绩赋给 A,B 中大于 A 的将 A 中的成绩改为 60 ,32.阅读下列算法,并回答问题: (1)设串 s=“OneWorldOneDream” ,t="One",pos 是一维整型数组,写出算法 f32(s,t,pos)执行之后得到的返回值和 pos 中的值; (2)简述算法 f32 的功能。 int strlen(char*s); /*返回串 s 的长度*/int index(char*st,char*t); /*若串 t 在串 st 中出现,则返回在串 st 中首次出现的下标值,否则返回-1*/ int f32(char*s, char*t, int pos[]) { int i, j, k, ls, ls=strlen(s); 1t=strlen(t); if (ls= =0||1t= =0) return-1; k=0; 第 27 页 i=0; do { j=index(s+i, t); if (j&=0) { pos[k++]=i+j; i+=j+1t; } }while(i+1t&=1s && j &=0); return } (1)8 (2)返回子串在主串中出现的次数,并将每一次出现的位置依次保存在 pos 数组当中。 返回子串在主串中出现的次数, 数组当中。 33.二叉排序树的存储结构定义为以下类型: typedef int KeyT typedef struct node { KeyType InfoT /*关键字项*/ /*其它数据项*/ * /*左、右孩子指针*/struct node *1child, } BSTNode, *BSTree;阅读算法 f33,并回答问题: (1)对如图所示的二叉排序树 T,写出 f33(T,8) 返回的指针所指结点的关键字; (2)在哪些情况下算法 f33 返回空指针? (3)简述算法 f33 的功能。 BSTNode *f33(BSTree T, KeyType x) { BSTNode *p; NULL;if (T= =NULL) return p=f33(T-&1child, x);if (p!=NULL) if (T-&key&x)return T; return f33(T-& rchild, x); }(1)10 ) (2)a 空树 b 当树中所有值都小于 X 的时候 ) 大的结点,若没有找到返回空指针。 (3)在二叉排序树中找第一次出现比 X 大的结点,若没有找到返回空指针。 )第 28 页 五、算法设计题(本题 10 分) 34.假设线性表采用顺序存储结构,其类型定义如下: #define ListSize 100 typedef struct { int data[ListSize]; } SeqList, *T 编写算法,将顺序表 L 中所有值为奇数的元素调整到表的前端。voil f34(Table L) {int i=0,j=0,t; for(i=0;L&L-&i++) or(i=0;L&L{if(L{if(L-&data[i]%2==1) {if(i!=j) {t=L{t=L-&data[i] L-&data[i]=L-data[j] &data[i]=LL-&data[j]=t } j++; } } }2009 年 1 月自学考试数据结构试题课程代码:02331 一、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.下列程序段的时间复杂度为( s=0; for(i=1;i&n;i++) for(j=1;j&n;j++) s+=i*j; A.O(1) B.O(n) C.O(2n) D.O(n2)第 29 页D) 2.假设某个带头结点的单链表的头指针为 head,则判定该表为空表的条件是( A.head==NULL; B.head-&next==NULL;B)C.head!=NULL; D.head-&next==head; 3.栈是一种操作受限的线性结构,其操作的主要特征是( A.先进先出 B.后进先出 C.进优于出 D.出优于进 4.假设以数组 A[n]存放循环队列的元素,其头、尾指针分别为 front 和 rear。若设定尾指针指向队列中的队尾 元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为( A.(rear-front-1)%n C.(front-rear+1)%n B.(rear-front)%n D.(rear-front+n)%n D ) D ) B )5.判断两个串大小的基本准则是(A.两个串长度的大小 B.两个串中首字符的大小 C.两个串中大写字母的多少 D.对应的第一个不等字符的大小6.二维数组 A[4][5]按行优先顺序存储, 若每个元素占 2 个存储单元, 且第一个元素 A[0][0]的存储地址为 1000, 则数组元素 A[3][2]的存储地址为( A.1012 B.1017 C.1034 D.1036 7.高度为 5 的完全二叉树中含有的结点数至少为( A.16 C.31 B.17 D.32 C ) A ) C )8.已知在一棵度为 3 的树中,度为 2 的结点数为 4,度为 3 的结点数为 3,则该树中的叶子结点数为( A.5 B.8 C.11D.18 9.下列所示各图中是中序线索化二叉树的是( A )第 30 页 10.已知含 6 个顶点(v0,v1,v2,v3,v4,v5)的无向图的邻接矩阵如图所示,则从顶点 v0 出发进行深度优先 遍历可能得到的顶点访问序列为( A.(v0,v1,v2,v5,v4,v3) B.(v0,v1,v2,v3,v4,v5) C.(v0,v1,v5,v2,v3,v4) D.(v0,v1,v4,v5,v2,v3) 11.如图所示有向图的一个拓扑序列是( A.ABCDEF B.FCBEAD C.FEDCBA D.DAEBCF 12.下列关键字序列中,构成大根堆的是( A.5,8,1,3,9,6,2,7 C.9,8,6,3,5,l,2,7 D ) B ) A )B.9,8,1,7,5,6,2,33 D.9,8,6,7,5,1,2,313.对长度为 15 的有序顺序表进行二分查找,在各记录的查找概率均相等的情况下,查找成功时所需进行的关 键字比较次数的平均值为(39 15 A. 51 15 C. 49 15 B. 55 15 D.B)14.已知一个散列表如图所示,其散列函数为 H(key)=key%11,采用二次探查法处理冲突,则下一个插入的关 键字 49 的地址为( D )15.数据库文件是由大量带有结构的( A.记录组成的集合 B.字符组成的集合A)C.数据项组成的集合 D.数据结构组成的集合 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.估算算法时间复杂度时考虑的问题规模通常是指算法求解问题的__规模函数 ______。 规模函数_ 规模函数 17.在双向循环链表中插入一个新的结点时,应修改__4_______个指针域的值。第 31 页 18.若进栈序列为 a,b,c,且进栈和出栈可以穿插进行,则可能出现_____5____个不同的出栈序列。 19.链串的结点大小定义为结点的___数据域 ___中存放的字符个数。 数据域___ 数据域 20.广义表(a,(d,(c)))的深度为____3_____。 21.在含有 3 个结点 a,b,c 的二叉树中,前序序列为 abc 且后序序列为 cba 的二叉树有____4_____棵。 22.若用邻接矩阵表示有向图,则顶点 i 的入度等于矩阵中__第 i 列的非零个数 ______。 列的非零个数_ 23.对关键字序列(15,18,11,13,19,16,12,17,10,8)进行增量为 5 的一趟希尔排序的结果为_15,12,11,10,8,16,18,17,13,19________。24.索引顺序查找的索引表由各分块中的最大关键字及各分块的____起始地址 __构成。 起始地址___ 25.VSAM 文件的实现依赖于操作系统中的___虚拟 ___存取方法的功能。 虚拟___ 三、解答题(本大题共 4 小题,每小题 5 分,共 20 分) 26.假设有一个形如的 8×8 矩阵,矩阵元素都是整型量(次对角线以上的元素都是 0)。 若将上述矩阵中次对角线及其以下的元素按行优先压缩存储在一维数组 B 中,请回答下列问题: (1)B 数组的体积至少是多少? (2)若 a18 存储在 B[0]中,a56 存储在 B[k]中,则 k 值为多少? (1)36 (2)12 27.对关键字序列(5,8,1,3,9,6,2,7)按从小到大进行快速排序。 (1)写出排序过程中前两趟的划分结果; (2)快速排序是否是稳定的排序方法? (1)2,3,1,5,9,6,8,71,3,2,5,7,6,8,9,(2)不稳定 28.假设通信电文使用的字符集为{a,b,c,d,e,f,g,h},各字符在电文中出现的频度分别为:7,26,2, 28,13,10,3,11,试为这 8 个字符设计哈夫曼编码。要求: (1)画出你所构造的哈夫曼树(要求树中左孩子结点的权值不大于右孩子结点的权值);第 32 页 (2)按左分支为 0 和右分支为 1 的规则,分别写出与每个字符对应的编码。 (1) (2)f:000 :c:10000 : e:101 : h:001 : g:10001 : d:11 b:01 : : a:1001 :29.已知 3 阶 B―树如图所示, (1)画出将关键字 6 插入之后的 B―树; (2)画出在(1)所得树中插入关键字 2 之后的 B―树。 (1) (2)做这个题的口诀是:中间往上走,两边要岔开。 做这个题的口诀是:中间往上走,两边要岔开。四、算法阅读题(本大题共 4 小题,每小题 5 分,共 20 分) 30.假设以带头结点的单链表表示线性表,单链表的类型定义如下:typedef intDataTtypedef struct node { DataT struct node * } LinkNode, * LinkL 阅读下列算法,并回答问题: (1)已知初始链表如图所示,画出执行 f30(head)之后的链表;题 30 图 (2)简述算法 f30 的功能。 void f30( LinkList head) { LinkList p,r,if (head - & next) { r = head - & p = r-& r - & next = NULL;第 33 页 while (p) { s =p; p = p-& if ( s - & data% 2 = = 0) { s - & next = head - & head - & next = } else { s - & next = r - & r-&next = r =s; } } } } (1)8,2,5,7 (2)将链表中的值偶数置前奇数置后。 将链表中的值偶数置前奇数置后。 31.假设以二叉链表表示二叉树,其类型定义如下: typedef struct node { DataT struct node * lchild, } * BinT 阅读下列算法,并回答问题: (1)已知以 T 为根指针的二叉树如图所示, 写出执行 f31(T)之后的返回值; (2)简述算法 f31 的功能。 int f31 ( BinTree T) { if ( ! T) return 0; d = f31 ( T - & lchild) + f31 ( T - & rchild) ;第 34 页*//左右孩子指针 if (T - & lchild && T - & rchild) return else return (1)3 (2)求二叉树度为 2 的结点个数 32.设有向图邻接表定义如下: typedef struct { VertexNode adjlist[ MaxVertexNum ] ; int n,e; }ALGraph; //图的当前顶点数和弧数 //邻接表类型 d+1;其中顶点表结点 VertexNode 边表结点 EdgeNode 结构为: 阅读下列算法,并回答问题: (1)已知某有向图存储在如图所示的邻接 表 G 中,写出执行 f32(&G)的输出; (2)简述算法 f32 的功能。 int visited[ MaxNum ]; void DFS(ALGraph * G, int i) { EdgeNode * visited [ i ] = TRUE ; if (G - & adjlist[ i]. firstedge = = NULL) printf( &% c &, G - & adjlist[ i]. vertex); else { p = G - & adjlist[ i]. while (p ! = NULL) { if ( ! visited[p -& adjvex] ) DFS( G, p - & adjvex) ; p = p-&第 35 页 } } } void f32 ( ALGraph * G) { for (i = 0; i & G-&n; i ++) visited [ i ] = FALSE ; for (i = 0; i & G-&n; i++) if ( ! visited[i] ) DFS(G, i) ; }P108 (1)BD (2)输出无邻接点的顶点 33.下列算法 f33 的功能是对记录序列进行双向冒泡排序。算法的基本思想为,先从前往后通过交换将关键字 最大的记录移动至后端,然后从后往前通过交换将关键字最小的记录移动至前端,如此反复进行,直至整个序 列按关键字递增有序为止。请在空缺处填入合适的内容,使其成为完整的算法。#define MAXLEN 100 typedef int KeyT typedef struct { KeyT InfoT } NodeT typedef NodeType SqList[ MAXLEN ]; void f33 ( SqList R, int n) { int i,j,k; NodeT i =0; j =n-l; while (i & j) {第 36 页 for ((1))if (R[k].key & R[k +l].key) { t = R[k]; R[k] = R[k +1]; R[k +1] = } j--; for (k =j; k & k -- ) if ( (2) ){t = R[k]; R[k] = R[k-1]; R[k-1] = } (3) } } (1)k=0;k&j;k++ (2)R[k].key&R[k-1].key (3)i++ 五、算法设计题(本大题 10 分) 34.假设以带头结点的单链表表示线性表,单链表的类型定义如下: typedef int DataT typedef struct node { DataT struct node * } LinkNode, * LinkL 编写算法,删除线性表中最大元素(假设最大值唯一存在)。函数原型为: void f34(LinkList head) ; ;第 37 页 全国 2008 年 10 月自学考试数据结构试题课程代码:02331 一、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或 未选均无分。 1.如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是( C ) A. 栈 C. 树 B. 队列 D. 图 C )2.下面程序段的时间复杂度为( for (i=0; i&m; i++) for (j=0; j&n; j++) A[i][j]=i*j; A. O (m2) C. O (m*n) B. O (n2) D. O (m+n)3.在头指针为 head 的非空单循环链表中,指针 p 指向尾结点,下列关系成立的是( A. p-&next==head B. p-&next-&next==head C. p-&next==NULL D. p==headA )4.若以 S 和 X 分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列是( D ) A. SXSSXXXX C. SXSXXSSX B. SXXSXSSX D. SSSXXSXX D )5.两个字符串相等的条件是(A. 串的长度相等 B. 含有相同的字符集 C. 都是非空串 D. 串的长度相等且对应的字符相同6. 如 果 将 矩 阵 An × n 的 每 一 列 看 成 一 个 子 表 , 整 个 矩 阵 看 成 是 一 个 广 义 表 L , 即 L=((a11,a21,…,an1),( a12,a22,…,an2),…, (a1n,a2n,…,ann) ),并且可以通过求表头 head 和求表尾 tail 的运算求取 矩阵中的每一个元素,则求得 a21 的运算是( A. head (tail (head (L))) A )B. head (head(head(L)))C. tail (head (tail (L))) D. head (head (tail (L)))第 38 页 7.已知一棵含 50 个结点的二叉树中只有一个叶子结点,则该树中度为 1 的结点个数为( A. 0 B. 1 C. 48 D. 49D )8.在一个具有 n 个顶点的有向图中,所有顶点的出度之和为 Dout ,则所有顶点的入度之和为( A. Dout B. Dout-1 C. Dout+1 D. n C )A )9.如图所示的有向无环图可以得到的拓扑序列的个数是( A. 3 B. 4 C. 5 D. 610.如图所示的带权无向图的最小生成树的权为( C ) A. 51 C. 54 B. 52 D. 5611.对长度为 n 的关键字序列进行堆排序的空间复杂度为( B ) A. O(log2n) C. O(n) B. O(1)D. O(n*log2n)12.已知用某种排序方法对关键字序列(51,35,93,24,13,68,56,42,77)进行排序时,前两趟排序的 结果为 (35,51,24,13,68,56,42,77,93) (35,24,13,51,56,42,68,77,93) 所采用的排序方法是( B ) A. 插入排序 B. 冒泡排序 C. 快速排序 D. 归并排序第 39 页 13.已知散列表的存储空间为 T[0..18],散列函数 H(key)=key%17,并用二次探测法处理冲突。散列表中已插 入下列关键字:T[5]=39,T[6]=57 和 T[7]=7,则下一个关键字 23 插入的位置是( D ) A. T[2] B. T[4] C. T[8] D. T[10] 14.适宜进行批量处理的文件类型是( A. 顺序文件 B. 索引顺序文件 C. 散列文件 D. 多关键字文件 15.VSAM 文件的索引结构为( A. B+树 B. 二叉排序树 C. B-树 D. 最优二叉树 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.如果某算法对于规模为 n 的问题的时间耗费为 T(n)=3n3,在一台计算机上运行时间为 t 秒,则在另一台 运行速度是其 64 倍的机器上,用同样的时间能解决的问题规模是原问题规模的4A )A )倍。17.将两个长度分别为 m 和 n 的递增有序单链表,归并成一个按元素递减有序的单链表,可能达到的最好的时 间复杂度是O(m+n)。18.已知循环队列的存储空间大小为 m,队头指针 front 指向队头元素,队尾指针 rear 指向队尾元素的下一个位 置,则在队列不满的情况下,队列的长度是 19.字符串“sgabacbadfgbacst” 中存在有(rear-front+m)%m ) 3。个与字符串“ba”相同的子串。20.假设以列优先顺序存储二维数组 A[5][8],其中元素 A[0][0]的存储地址为 LOC(a00),且每个元素占 4 个存 储单元,则数组元素 A[i][j]的存储地址为Loc a[00]+4*(5j+i)。21.假设用&x,y&表示树的边(其中 x 是 y 的双亲) ,已知一棵树的边集为 {&b,d&,&a,b&,&c,g&,&c,f&,&c,h&,&a,c&},该树的度是 22.n 个顶点且含有环路的无向连通图中,至少含有3 n。 条边。选择排23.在一般情况下用直接插入排序、选择排序和冒泡排序的过程中,所需记录交换次数最少的是序。 结构也无特殊要求。24.和二分查找相比,顺序查找的优点是除了不要求表中数据元素有序之外,对 存储 25.顺序文件中记录存放的物理顺序和逻辑顺序一致。三、解答题(本大题共 4 小题,每小题 5 分,共 20 分)第 40 页 26.由森林转换得到的对应二叉树如图所示,写出原森林中第三棵树的前序序列和后序序列。前序序列:GHIJ 后序序列:HJIG 27.图的邻接表的类型定义如下所示: #define MaxVertexNum typedef struct node { struct node * }EdgeN typedef struct VertexType EdgeNode { * 50}VertexN typedef VertexNode typedef struct { AdjL int n, }ALG 为便于删除和插入图的顶点的操作, 可将邻接表的表头向量定义为链式结构, 两种定义的存储表示实例如下图 所示,请写出重新定义的类型说明。第 41 页AdjList[MaxVertexNum]; 题 27 图28.某类物品的编号由一个大写英文字母及 2 位数字(0..9)组成,形如 E32。运用基数排序 对下列物品编号序列进行按字典序的排序,写出每一趟(分配和收集)后的结果。 E13,A37,F43,B32,B47,E12,F37,B12 第一趟:书 第二趟: 第三趟: 29.(1)画出对表长为 13 的有序顺序表进行二分查找的判定树; (2)已知关键字序列为(12,14,16,21,24,28,35,43,52,67,71,84,99) ,写出在该序列中二分查 找 37 时所需进行的比较次数。 (1)P172 (2)3 次 四、算法阅读题(本大题共 4 小题,每小题 5 分,共 20 分) 30.已知线性表的存储结构为顺序表,阅读下列算法,并回答问题: (1)设线性表 L=(21,-7,-8,19,0,-11,34,30,-10) ,写出执行 f30(&L)后的 L 状态; (2)简述算法 f30 的功能。 void f30 (SeqList *L) {P161int i,j; for (i=j=0;i&L-& i++) if(L-&data[i]&=0){ if(i!=j)L-&data[j]=L-&data[i]; j++; }第 42 页 L-&length=j; } (1)L=(21,19,0,34,30) ( ) (2)删除顺序表中负值元素 31.阅读下列算法,并回答问题: (1) Q1 和 Q2 都是队列结构, Q、 设队列 Q= 1, -5, -4, 9)其中 1 为队头元素, ( 0, 2, -6, , 写出执行 f31 (&Q,&Q1,&Q2) 之后队列 Q、Q1 和 Q2 的状态; (2)简述算法 f31 的功能。 (注:lnitQueue、EnQueue、DeQueue 和 QueueEmpty 分别是队列初始化、入列、出队和判队空的操作) void f31 (Queue*Q, Queue*Q1, Queue*Q2) { lnitQueue (Q1); lnitQueue (Q2); while (!QueueEmpty (Q)) { e=DeQueue (Q); if (e&=0) EnQueue (Q1,e); else EnQueue (Q2,e) } }(1) ) Q==NULL Q1=(1,0,2,9) ( ) Q2=(-5,-4.-6) ( , )(2)将队列 Q 中元素依次退队,并将正值及 0 元素入队列到 Q1 中,负值元素入队到队列 Q2 中。 中元素依次退队, 32.阅读下列算法,并回答问题: (1)假设串由合法的英文字母和空格组成,并以’\0’作结束符。设串 s=”??|?am?a???student”(?表示空格符), 写出 f32(s)的返回值; (2)简述算法 f32 的功能。 int f32 (char*s){ int i, n,第 43 页 n=inword=0; for (i=0;s[i]!=’\0’;i++) if (s[i]!=’?’&& inword==0){ inword=1; n++; } else if (s[i]==’?’&& inword==1) inword=0; } (1)4 (2)对字符串的单词个数进行累加计数。 对字符串的单词个数进行累加计数。33.阅读下列对正整数关键字序列 L 操作的算法,并回答问题: (1)设 L=(28,19,27,49,56,12,10,25,20,50),写出 f33 (L,4)的返回值; (2)简述函数 f33 的功能。 int Partition (SeqList*L, int low, int high); ∥对 L[low..high]做划分,返回基准记录的位置,并使左部的关键字 ∥都小于或等于基准记录的关键字,右部的关键字都大于基准记录的关键字 int f33 (SeqList L, int k){int low, high, low=1; high=L. if (k&low || k&high) return-1; do { pivotpos=Partition (&L, low, high);∥调用快速排序的划分算法 if (pivotpos&k) low=pivotpos+1;第 44 页 else if (pivotpos&k) high=pivotpos-1; }while (pivotpos!=k); return L.data [pivotpos]; } (1)20 (2) 利用快速排序的划分机制进行查找,以求取序列中排序第 K 个的元素。 利用快速排序的划分机制进行查找, 个的元素。 五、算法设计题(本题 10 分) 34.二叉排序树的类型定义如下: typedef struct BSTNode {∥ 二叉排序树的结点结构 ∥数据域 *lchild, * ∥左、右孩子指针struct BSTNode}BSTNode,*BST 设计递归算法,统计一棵二叉排序树 T 中值小于 a 的结点个数。Void count(BSTNode,int a int *sum) {if(T) {count(T{count(T-&lchild,a,sum); If(T-&data&a) f(T{(*sum)++;count(T-&rchild,a,sum)} (*sum)++;count(T} }全国 2008 年 1 月高等教育自学考试数据结构试题课程代码:02331一、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.逻辑上通常可以将数据结构分为( A.动态结构和静态结构 C.线性结构和非线性结构 C ) B.顺序结构和链式结构 D.初等结构和组合结构 A )2.在下列对顺序表进行的操作中,算法时间复杂度为 O(1)的是( 第 45 页 A.访问第 i 个元素的前驱(1& i ≤ n )B.在第 i 个元素之后插入一个新元素( 1 ≤ i ≤ n ) C.删除第 i 个元素( 1 ≤ i ≤ n ) D.对顺序表中元素进行排序 3.假设带头结点的单向循环链表的头指针为 head,则该链表为空的判定条件是( D A.head= =NULL C.head!=NULL B.headC&next= =NULL D.headC&next= =head)4.已知栈的最大容量为 4。若进栈序列为 1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为(C)B.2,3,5,6,1,4 D.1,4,6,5,2,3 AA.5,4,3,2,1,6 C.3,2,5,4,1,65.与线性表相比,串的插入和删除操作的特点是( A.通常以串整体作为操作对象 C.算法的时间复杂度较高)B.需要更多的辅助空间 D.涉及移动的元素更多6.假设以三元组表表示稀疏矩阵,则与如图所示三元组表对应的 4×5 的稀疏矩阵是(注:矩阵的行列下标均从 1开始) (? 0 ?8 ? 0 ? 7 A. ? 0 0 ? ?? 5 0 ? ? 0 ?8 ? 0 ? 0 C. ? 7 0 ? ?? 5 0 ?B)? 0 ?8 ? 0 ? 7 B. ? ?5 0 ? ? 0 0 ? ? 0 ?8 ? 0 ? 7 D. ? ?5 0 ? ? 0 0 ? A ) 0 6 0? ? 0 0 3? 4 0 0? ? 0 0 0? ? 0 6 0? ? 0 0 0? 4 0 3? ? 0 0 0? ?0 6 0? ? 0 0 0? 0 0 0? ? 4 0 0? ? 0 6 0? ? 0 0 3? 0 0 0? ? 4 0 0? ?7.以下有关广义表的表述中,正确的是( A.由 0 个或多个原子或子表构成的有限序列 B.至少有一个元素是子表 C.不能递归定义 D.不能为空表8.树的先根序列等同于与该树对应的二叉树的( A.先序序列 C.后序序列A)B.中序序列 D.层序序列 B9.假设有向图含 n 个顶点及 e 条弧,则表示该图的邻接表中包含的弧结点个数为( . A.n B.e)第 46 页 C.2eD.n?e )10.如图所示的有向无环图可以得到的不同拓扑序列的个数为( CA.1 C.3 11.下列排序方法中,稳定的排序方法为( A.希尔排序 C.快速排序B.2 D.4 D ) B.堆排序 D.直接插入排序 C )12.对下列关键字序列进行快速排序时,所需进行比较次数最少的是( A.(1,2,3,4,5,6,7,8) C.(4,3,8,6,1,7,5,2)B.(8,7,6,5,4,3,2,1) D.(2,1,5,4,3,6,7,8) B )13.含 n 个关键字的二叉排序树的平均查找长度主要取决于( A.关键字的个数 C.关键字的取值范围 B.树的形态 D.关键字的数据类型14.下列查找算法中,平均查找长度与元素个数 n 不直接相关的查找方法是( D A.分块查找 C.二分查找 B.顺序查找 D.散列查找 B ))15.可有效提高次关键字查找效率的文件是( A.顺序文件 C.散列文件B.倒排文件 D.VSAM 文件二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。映像___ 16.数据的存储结构是其逻辑结构__映像 __。17.输入线性表的 n 个元素建立带头结点的单链表,其时间复杂度为____O(n)_______。 ( ) 18.假设循环队列的元素存储空间大小为 m,队头指针 f 指向队头元素,队尾指针 r 指向队尾元素的下一个位置,则 在少用一个元素空间的前提下,表示“队满”的条件是____(rear+1)%m=f_______。 ) 19.给定串的联接操作函数: char *strcat(char *to, char *from); //将串 from 联接到串 to 的末尾,并返回联接后的串 若字符串 s1= point,s2= of,则 strcat(s1,strcat)(s2,s1))的操作结果是_____pointofpoint______。 20.假设二维数组 A[8][10]按行优先顺序存储,若每个元素占 2 个存储单元,元素 A[0][0]的存储 元素 A[4][5]的存储地址为___190_______。 21.假设一棵完全二叉树含 1000 个结点,则其中度为 2 的结点数为____499_______。 第 47 页 地址为 100,则 22.已知一个有向网如图所示,从顶点 1 到顶点 4 的最短路径长度为_____55______。23.在快速排序、堆排序和归并排序中,最坏时间复杂度为 O(n2)的排序算法有____快速排序 ____。 快速排序___ 24.假设散列表的表长为 11,散列函数为 H(key)=key%7,若用线性探测处理冲突,则探查地址序列 hi 的计算公式为 (H(key)+i-1)___________ (i = 1,2, L ,10) 。 ( ) )索引集_ 顺序集_ 25.VSAM 文件由__索引集 ________,顺序集 __________和数据集三部分组成。三、解答题(本大题共 4 小题,每小题 5 分,共 20 分)26.已知广义表的图形表示如图所示, (1) 写出该广义表 L; (2) 分别写出该广义表的深度和长度。(1) 3,4 (2) L=((e),(),(a,(b,c,d)), (b,c,d)) ,27.已知二叉树的先序序列和中序序列分别为 ABDEHCFI 和 DBHEACIF, (1) 画出该二叉树的二叉链表存储表示; (2) 写出该二叉树的后序序列。 (1) (2)DHEBIFCA 28.已知有向图的邻接表如图所示, (1) 写出从顶点 A 出发,对该图进行广度优先搜索遍历的顶点序列; (2) 画出该有向图的逆邻接表。 . (1)ABDCE (2)29.依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作: 1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度 ASL;第 48 页 2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。 写出满足上述要求的序列中的第一个 元素。 (1) (2) 7,8,9 四、算法阅读题(本大题共 4 小题,每小题 5 分,共 20 分) 30.假设以带头结点的单链表表示线性表,阅读下列算法 f30,并回答问题: (1) 设线性表为( a1, a2, a3, a4, a5, a6, a7 ), 写出执行算法 f30 后的线性表; (2) 简述算法 f30 的功能。 void f30(LinkList L) { //L 为带头结点单链表的头指针 LinkList p,q; P =L; while (p &&pC&next){ q = pC& pC&next =qC& p =qC& free(q); } }(1)a7 (2)将线性表中前 n-1 个元素依次删除,保留最后的一个结点,使得头结点指向最后一个结点 将线性表中前 个元素依次删除,保留最后的一个结点,31.算法 f31 的功能是借助栈结构实现整数从 10 进制到 8 进制的转换,阅读算法并回答问题: (1) 画出 n 为十进制的 1348 时算法执行过程中栈的动态变化情况; (2) 说明算法中 while 循环完成的操作。 void f31(int n) //n 为非负的十进制整数 { SeqStack S; InitStack(& S); do{ Push(& S,n%8); n =n/8; }while (n); 第 49 页 while ( ! StackEmpty(& S)){ e =Pop(& S); printf (%ld,e); } } (1)(2) 32.已知以二叉链表作二叉树的存储结构,阅读算法 f32,并回答问题: (1) 设二叉树 T 如图所示,写出执行 f32(T)的返回值; (2) 简述算法 f32 的功能。 int f32(BinTree T) { int m, if(! T) return 0; else{ m= f32(TC&lchild); n = f 32(TC&rchild); if(m&n)return m +1; else return n+1; } }(1)4 (2)求二叉树的高度 求二叉树的高度33.设有向图邻接表定义如下; typedef struct{ VertexNode adjlist[Max VertexNum]; int n,e; } ALG //图的当前顶点数和弧数 //邻接表类型 vertex firstedge其中顶点表结点 VertexNode 结构为:第 50 页 边表结点 EdegNode 结构为:adjvexnext阅读下列算法 f33,并回答问题: (1)已知有向图 G 的邻接表如图所示, 写出算法 f33 的输出结果; (2)简述算法 f33 的功能。 void dfs (ALGraph *G,int v) { EdgeNode * visited[v]=TRUE; printf(%c,GC&adjlist[v]?vertex); for(p =GC&adjlist[v])? p=pC&next) if(! visited[pC&adjvex]) dfs (G, pC&adjvex); } void f33(ALGraph *G) { int v,w; for(v=0; v &GC&n; v ++) { for(w=0;w&GC&n; w++) visited[w]=FALSE; printf(%d: ,v); dfs(G,v); printf(n); } } (1) (2)深度优先搜索 五、算法设计题(本大题 10 分) 34.假设以单链表表示线性表,单链表的类型定义如下: typedef struct node { DataT struct node * 第 51 页 } LinkNode, *LinkL 编写算法,将一个头指针为 head 且不带头结点的单链表改造为一个含头结点且头指针仍为 head 的单向循环链表, 并分析算法的时间复杂度。第 52 页
2015年10月自考数据结构(02331)试题及答案解析_理学_高等教育_教育专区。2015 年 lO 月高等教育自学考试全国统一命题考试 数据结构 试卷 (课程代码 02331) 本试卷...全国2012年10月自考数据结构(02331)试题及答案_从业资格考试_资格考试/认证_教育专区。数据结构02331 试题及答案 全国2012 年 10 月高等教育自学考试 数据结构试题...绝密★ 考试结束前 全国 2013 年 10 月高等教育自学考试 数据结构试题课程代码:02331 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分注意事项:...2017年4月自考02331数据结构试卷及答案解释_工学_高等教育_教育专区。 文档贡献者 xumy222 贡献于 1/2 相关文档推荐 ...全国自学考试数据结构试题02331试题及答案 - 本人刚刚考过,成绩还不错在此特意将老师将的试卷拿出来和大家分享。有什么为题可以联系我,非常乐意解答。2017年10月自考02331数据结构试题及答案_自考_成人教育_教育专区
暂无评价|0人阅读|0次下载 | 举报文档 2017年10月自考02331数据结构试题及答案_自考_成人教育_...自学考试数据结构重点总结02331(2014整理)_教育学_高等教育_教育专区。自己总结的,现在计算机网络自考已经拿到两证。自考数据结构重点(2014 整理)第一章 概论 1....02331数据结构2013年1 月份历年真题附答案_工学_高等教育_教育专区。自考 02331...月高等教育自学考试全国统一命题考试 数据结构 试题 课程代码:02331 考生答题注意...02331数据结构2014年4 月份历年真题附答案_工学_高等教育_教育专区。自考全国试题 02331数据结构2014年4 月份历年真题附答案 全国2014 年 4 月高等教育自学考试 ...全国2012 年 10 月高等教育自学考试 数据结构试题课程代码:02331 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分注意事项: 1. 答题前,考生...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 数据结构02331pdf下载 的文章

 

随机推荐