数据结构模拟试卷(一)

合集下载

2015年1月全国自考数据结构导论模拟试卷(一)

2015年1月全国自考数据结构导论模拟试卷(一)

2015年1月全国自考数据结构导论模拟试卷(一)一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

第1题.【正确答案】 B【你的答案】本题分数2分第2题算法的计算量的大小称为计算的【】A. 效率B. 复杂性C. 现实性D. 难度【正确答案】 B【你的答案】本题分数2分第3题 .【正确答案】 A【你的答案】本题分数2分第4题排序算法中,第一趟排序后,任一元素都不能确定其最终位置的算法是【】A. 选择排序B. 插入排序C. 冒泡排序D. 快速排序【正确答案】 B【你的答案】本题分数2分第5题排序趟数与序列的原始状态有关的排序方法是【】A. 插入排序法B. 选择排序法C. 二路归并排序法D. 快速排序法【正确答案】 D【你的答案】本题分数2分第6题已知某完全二叉树采用顺序存储结构,结点数据信息的存放顺序依次为A、B、C、D、E、F、G、H,该完全二叉树的后根遍历序列为【】A. HDBEFCGAB. HDEBFGCAC. DHEBFGCAD. DEHBFGCA【正确答案】 B【你的答案】本题分数2分第7题磁盘是一种广泛使用的外部存储设备,对磁盘中的数据的存取操作【】A. 只能用顺序方式B. 只能用随机方式C. 既能用顺序方式也能用随机方式D. 方式取决于具体的机器【正确答案】 C【你的答案】本题分数2分第8题若有三个字符的字符串序列依次执行入栈操作,则其所有可能的输出排列共有【】A. 3种B. 4种C. 5种D. 6种【正确答案】 C【你的答案】本题分数2分第9题若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则最节省运算时间的存储方式是【】A. 单链表B. 双链表C. 单循环链表D. 带头结点的双循环链表【正确答案】 D【你的答案】本题分数2分第10题当采用分块查找时,数据的组织方式为【】A. 数据分成若干块,每块内数据有序B. 数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同【正确答案】 B【你的答案】本题分数2分第11题若评价算法的时间复杂性,比较对数阶量级与线性阶量级,通常【】A. 对数阶量级复杂性大于线性阶量级B. 对数阶量级复杂性小于线性阶量级C. 对数阶量级复杂性等于线性阶量级D. 两者之间无法比较【正确答案】 B【你的答案】本题分数2分第12题数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为【】A. 存储结构B. 逻辑结构C. 链式存储结构D. 顺序存储结构【正确答案】 C【你的答案】本题分数2分第13题线性结构中的一个结点代表一个【】A. 数据元素B. 数据项C. 数据D. 数据结构【正确答案】 A【你的答案】本题分数2分第14题一组记录的键值为(46,74,18,53,14,20,40,38,86,65),利用堆排序的方法建立的初始堆为【】A. (14,18,38,46,65,40,20,53,86,74)B. (14,38,18,46,65,20,40,53,86,74)C. (14,18,20,38,40,46,53,65,74,86)D. (14,86,20,38,40,46,53,65,74,18)【正确答案】 B【你的答案】本题分数2分第15题.【正确答案】 D二、填空题(本大题共13小题,每小题2分,共26分)请在每小题的空格中填上正确答案。

数据结构模拟试题(1)

数据结构模拟试题(1)

(1)
(2)
(3)
(4)
参考答案:
(0) [30 18 20 15 38 12 44 53 46 18* 26 86]
(1) [18 30][15 20][12 38][44 53][18* 46][26 86]
(2) [15 18 20 30][12 38 44 53][18* 26 46 86]
A:n-I B:n-I+1
C:n-i-1 D:I
7、 不带头结点的单链表first为空的判定条件是( )。
A:first == NULL; B:first->link == NULL;
C:first->link == first; D:D. first != NULL;
8、 树中所有结点的度之和等于所有结点数加( )。
A:0 B:1
C:-1 D:2
9、 一棵具有35个结点的完全二叉树的高度为( )。假定空树的高度为 -1。
A:5 B:6
C:7 D:8
数据结构模拟试题(1)
一、填空题:06分,每题02分
1、 从一个具有n个结点的单链表中搜索其值等于x的结点时, 在搜索成功的情况下, 需平均比较_______次。
2、 根据一组记录(56,42,50,64,48)依次插入结点生成一棵AVL树时,当插入到值为_______的结点时需要进行旋转调整。
31、 已知一个数据表为{48,25,56,32,40},请写出在进行快速排序的过程中每次划分后数据表的变化。
(0) [48 25 56 32 40]
(1)
(2)
(3)
参考答案:
(0) [48 25 56 32 40]

数据结构模拟试卷及参考答案

数据结构模拟试卷及参考答案

数据结构模拟试卷(一)及参考答案一.单项选择题(本大题共15小题,每小题2分,共30分)1.如果只想得到1024个元素组成的序列中的前5个最小元素,那么用( A )方法最快。

A、起泡排序B、快速排序C、堆排序D、直接选择排序2.算法分析的目的是(B)A.辨别数据结构的合理性B.评价算法的效率C.研究算法中输入与输出的关系D.鉴别算法的可读性3.在线性表的下列运算中,不改变数据元素之间结构关系的运算是(C)A.插入B.删除C.定位D.排序4.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为(D)A.3,2,6,1,4,5 B.5,6,4,2,3,1C.1,2,5,3,4,6 D.3,4,2,1,6,55.设串sl=″DataStructureswithJava″,s2=″it″,则子串定位函数index(s1,s2)的值为(A)A.15 B.16 C.17 D.186.一个顺序存储的线性表的第一个元素的存储地址是100,每个元素的长度为4,则第4个元素的存储地址是(B)。

A. 108B. 112C. 116D. 1207.从一个具有n个结点的单链表中查找其值等于x的结点,在查找成功的情况下,平均需要比较(C)个结点。

A. nB. n/2C. (n+1)/2D. (n-1)/28.在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系(D)A.不一定相同 B.互为逆序C.都不相同D.都相同9.高度为5的二叉树至多有结点数为(A)A. 63B. 32C. 24D.6410.若用邻接矩阵表示一个有向图,则其中每一列包含的″1″的个数为(B)A.图中每个顶点的出度B.图中每个顶点的入度C.图中弧的条数D.图中连通分量的数目11.图的邻接矩阵表示法适用于表示(C)A.无向图B.有向图C.稠密图D.稀疏图12.在一个单链表中,若p所指的结点不是最后一个结点,在p之后插入s所指的结点,则执行(D)。

数据结构练习试卷1(题后含答案及解析)

数据结构练习试卷1(题后含答案及解析)

数据结构练习试卷1(题后含答案及解析)题型有:1. 选择题选择题(每小题1分,共75分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。

1.数据结构主要研究数据的______。

A.逻辑结构B.存储结构C.逻辑结构和存储结构D.逻辑结构和存储结构及其运算的实现正确答案:D解析:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

数据结构一般包括三方面的内容:①数据之间的逻辑关系。

从逻辑关系上描述数据,与数据的存储无关。

②数据的存储结构。

存储结构分为顺序结构和链式结构,是逻辑结构在计算机存储器中的表示,它包括数据元素的表示和关系的表示。

③数据的运算。

也就是在数据上所施加的一系列操作。

只考虑操作的功能是怎样的,暂不考虑如何实现。

综上所述,本题的正确答案为选项D。

知识模块:数据结构2.在数据结构中,结点(数据元素)及结点间的相互关系组成数据的逻辑结构。

按逻辑结构的不同,数据结构通常可分为______两类。

A.线性结构和非线性结构B.紧凑结构和稀疏结构C.动态结构和静态结构D.内部结构和外部结构正确答案:A解析:在数据结构中,结点(数据元素)及结点间的相互关系组成数据的逻辑结构。

按逻辑结构的不同,数据结构通常可分为线性结构和非线性结构两类。

本题正确答案为选项A。

知识模块:数据结构3.下面叙述不正确的是______。

A.算法的执行效率与数据的存储结构有关B.算法的空间复杂度是指执行这个算法所需要的内存空间C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.算法的时间复杂度是指执行这个算法所需要的时间正确答案:D解析:算法的时间复杂度是指执行算法所需要的计算工作量,故D选项不正确。

知识模块:数据结构4.数据的存储结构是指______。

A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据正确答案:B解析:数据的存储结构是数据元素在计算机存储器内的表示。

数据结构模拟试卷(含答案)

数据结构模拟试卷(含答案)

数据结构设计课程代码:7399一、单项选择题(在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。

每小题2分,共40分)1、串的长度是()。

A、串中不同字母的个数B、串中不同字符的个数C、串中所含字符的个数,且大于0D、串中所含字符的个数2、若用数组S[1..n]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。

为这两个栈分配空间的最佳方案是()。

A、S1的栈底位置为0,S2的栈底位置为n+1B、S1的栈底位置为0,S2的栈底位置为n/2C、S1的栈底位置为1,S2的栈底位置为nD、S1的栈底位置为1,S2的栈底位置为n/23、队列操作的原则是()。

A、先进先出B、后进先出C、只能进行插入D、只能进行删除4、有64个结点的完全二叉树的深度为()(根的层次为1)。

A、8B、7C、6D、55、在有n个结点的二叉链表中,值为非空的链域的个数为()。

A、n-1B、2n-1C、n+1D、2n+16、带权有向图G用邻接矩阵A存储,则顶点i的人度等于A中()。

A、第i行非∞的元素之和B、第i列非∞的元素之和C、第i行非∞且非0的元素个数D、第i列非∞且非0的元素个数7、在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为()。

A、0(n)B、0(log2n)C、0(nolg2n)D、0(n2)8、若表R在排序前已按键值递增顺序排列,则()算法的比较次数最少。

A、直接插入排序B、快速排序C、归并排序D、选择排序9、下列排序算法中,()排序在某趟结束后不一定选出一个元素放到其最终的位置上。

A、选择B、冒泡C、归并D、堆10、若线性表最常用的操作是存取第i个元素及其前趋的值,则采用()存储方式节省时间。

A、单链表B、双链表C、单循环链表D、顺序表11、对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用()遍历实现编号。

计算机数据结构考试题及答案

计算机数据结构考试题及答案

全真模拟试题(一)一、单项选择题(在每小题的4个备选答案中,选出正确的答案,并将其号码填在题干的括号内。

每小题2分,共24分)1.若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。

①单链表②双链表③单向循环④顺序表2.串是任意有限个()①符号构成的序列②符号构成的集合③字符构成的序列④字符构成的集合3.设矩阵A(aij ,l≤i,j≤ 10)的元素满足:aij≠0(i≥j, l≤i, j≤ 10)aij=0 (i<j, l≤i, j≤ 10)现将A的所有非0元素以行序为主序存放在首地址为2000的存储区域中,每个元素占有4个单元,则元素A[9][5]的首址为①2340 ②2336 ③2164 ④21604.如果以链表作为栈的存储结构,则退栈操作时()①必须判别栈是否满②对栈不作任何判别③必须判别栈是否空④判别栈元素的类型5.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()①front=front+1 ②front=(front+1)% m③rear=(rear+1)%m ④front=(front+1)%(m+1)6.深度为6(根的层次为1)的二叉树至多有()结点。

①64 ②32 ③31 ④637.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。

编号为49的结点X的双亲编号为()①24 ②25 ③23 ④无法确定8.设有一个无向图G=(V,E)和G’=(V’,E’)如果G’为G的生成树,则下面不正确的说法是()①G’为G 的子图②G’为G 的边通分量③G’为G的极小连通子图且V’=V④G’为G的一个无环子图9.用线性探测法查找闭散列表,可能要探测多个散列地址,这些位置上的键值()①一定都是同义词②一定都不是同义词③都相同④不一定都是同义词10.二分查找要求被查找的表是()①键值有序的链接表②链接表但键值不一定有序③键值有序的顺序表④顺序表但键值不一定有序11.当初始序列已经按键值有序,用直接插入算法对其进行排序,需要循环的次数为()①n2 ②nlog2n ③log2n ④n-112.堆是一个键值序列{k1,k2,…, kn},对i=1,2,…,|_n/2_|,满足( )①ki≤k2i≤k2i+1②ki<k2i+1<k2i③ki≤k2i且ki≤k2i+1(2i+1≤n)④ki≤k2i 或ki≤k2i+1(2i+1≤n)二、判断题(判断下列各题是否正确,正确在括号内打“V”,错的找“X”。

数据结构模拟考试试卷

数据结构模拟考试试卷

数据结构模拟考试试卷(1卷)一.判断题(下列各题,正确的请在前面的括号内打√;错误的打×)(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。

(ㄨ)(2)线性表的链式存储结构优于顺序存储。

(√)(3)将中缀表达式转换成后缀表达式是栈的重要应用。

(×)(4)栈和队列都是顺序存储的线性结构。

(×)(5)“DT”是“DA TA”的子串。

(×)(6)在二叉树中,具有一个子女的父结点,在中序遍历的序列中,它没有后继子女结点。

(×)(7)带权图的最小生成树是唯一的。

(√)(8)散列存储法的基本思想是由关键字的值决定数据的存储地址。

(√)(9)希尔排序是不稳定的排序。

(√)(10)具有n个叶子结点的哈夫曼树共有2n-1个结点。

二.填空题1.线性结构中元素之间存在一对一关系。

2.树形结构和图形结构合称为:非线性结构。

3.顺序表中逻辑上相邻的元素在物理位置上必须相连。

4.在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复杂度为O (n) 。

5.同一栈的各元素的类型相同。

6.已知表达式,求它的后缀表达式是栈的典型应用之一。

7.队列在进行出队操作时,首先要判断队列是否为空。

8.设循环队列的头指针front指向队头元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为front==(rear+1)% MAXLEN 。

9.串的链式存储结构简称为链式串。

10.求子串函数SubStr("Today is 30 July,2005",13,4)的结果是:July 。

11.给定如下图所示的二叉树,其层次遍历序列为:ABCEFGH 。

12.将一棵完全二叉树按层次编号,对于任意一个编号为i的结点,该结点右孩子的编号为:2*i+1 。

13.图的遍历有:深度优先搜和 _广度优先搜 __等方法。

国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)

国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)

国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)题型有:1. 选择题选择题1.算法具有五个特性,以下选项中不属于算法特性的是A.有穷性B.简洁性C.可行性D.确定性正确答案:B解析:算法的五个特性分别是:有穷性、可行性、确定性、输入和输出。

知识模块:数据结构与算法2.算法的有穷性是指A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用正确答案:A解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。

知识模块:数据结构与算法3.算法的时间复杂度是指A.算法的执行时间B.算法所处理的数据最C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数正确答案:D解析:算法的时间复杂度,是指执行算法所需要的计算工作量。

算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度量。

知识模块:数据结构与算法4.对存储器按字节进行编址,若某存储器芯片共有10根地址线,则该仔储器芯片的存储容量为A.1kbB.2kbC.4kbD.8kb正确答案:A解析:10根地址线,每根地址线有0和1两种情况,地址范围就是2的10次方=1024=1K。

知识模块:数据结构与算法5.磁盘处于写保护状态时其中的数据A.不能读出,不能删改B.可以读出,不能删改C.不能读出,可以删改D.可以读出,可以删改正确答案:B解析:磁盘处于写保护状态时其中的数据可以读出来,但是不能修改和删除。

知识模块:数据结构与算法6.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.讲当前应用程序转为后台运行B.退Windows后再关机C.终止当前应用程序的运行D.退出Windows后重新启动计算机正确答案:C解析:在Windows中,单击窗口中的按钮“”表示关闭当前运行的程序。

知识模块:数据结构与算法7.下列描述中正确的是A.数据的逻辑结构与存储结构必定是一一对应的B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对正确答案:D解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。

数据结构研究生入学考试模拟题(一)

数据结构研究生入学考试模拟题(一)

哈尔滨工业大学二〇〇八年硕士研究生考试模拟试题(一)考试科目:计算机专业基础适用专业:计算机科学与技术I 数据结构(含高级语言)部分(共75分)一、填空题(每空1分,共9分)+−++的后缀表达式1.表达式23((12*32)/434*5/7)108/9是。

2.设有一个10阶对称矩阵A采用压缩存储方式(以行为主序存储:a11=1),则a85的地址为。

3.设有广义表A=(((a,b),x),((a),(b)),(c,(d,(y)))),得到y的对广义表A的操作序列为。

4.如果二叉树有20个叶结点,有30个结点仅有一个孩子,则该二叉树的总节点数为。

5.G是一个非连通无向图,共有28条边,则该图至少有个顶点。

6.构造n个结点的强联通图,至少有条弧。

7.设表长为1023的有序线性表,查找每个元素的概率相等,采用折半查找方法,查找成功的ASL是。

8.分别采用堆排序、快速排序、冒泡排序和归并排序,对初太为有序的表,则最省时间的是算法,最费时间的是算法。

二、单项选择题(每题1分,共11分)1.静态链表中指针表示的是()A 下一元素的地址B 内存储器的地址C 下一元素在数组中的位置D 左链或右链指向的元素的地址2.计算算法的时间复杂度是属于一种()A 事前统计的方法B 事前分析估算的方法C 事后统计的方法D 时候分析估算的方法3.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()A 1和5B 2和4C 4和2D 5和14.若6行5列的数组以列序为主序顺序存储,基地址为1000,每个元素占2个存储单元,则第3行第4列的元素(假定无第0行第0列)的地址是()A 1040B 1042C 1026D 都不正确5.一棵124个叶节点的完全二叉树,最多有()个节点。

A 247B 248C 249D 250E 251 6.有n (n>0)个分支结点的满二叉树的深度为( ) A n 2-1 B log 2(n+1)+1 C log 2(n+1) D log 2(n-1) 7.某二叉树结点的中序序列为BDAECF ,后续序列为DBEFCA ,则该二叉树对应的森林包括( )棵树。

数据结构复习模拟题1

数据结构复习模拟题1

第3章栈和队列一选择题1. 对于栈操作数据的原则是( B. 后进先出)。

2. 在作进栈运算时,应先判别栈是否(①B. 满),在作退栈运算时应先判别栈是否(②A. 空)。

当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③B. n)。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 (④D. 栈底)分别设在这片内存空间的两端,这样,当(⑤C. 两个栈的栈顶在栈空间的某一位置相遇)时,才产生上溢。

3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i (1<=i<=n)个元素是(B. n-i+1)。

4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是(D. 不确定的)。

5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi是(D. 不确定)。

6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?(C. 3 4 6 5 2 1)A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 67. 设栈的输入序列是1,2,3,4,则(D. 4,3,1,2,)不可能是其出栈序列。

A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,8. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是(B.5 4 1 3 2)。

9. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是(D. 3 2 1 5 4)。

10. 某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是(D. d, c,a,b)。

A. a,c,b,dB. b, c,d,aC. c, d,b, aD. d, c,a,b11. 设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为(D. cabdef)。

数据结构模拟题1分析

数据结构模拟题1分析

数据结构试题1总共:15题,共100.0分一、单选(共8小题,24.0分)1.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动______个元素。

(3分)A.8B.63.5C.63D.72.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[4][5]在()位置,(10)表明用10进数表示。

(3分)A.672(10)B.626(10)C.709(10)D.724(10)3.一个有序顺序表有255个对象,采用顺序搜索法查表,平均搜索长度为________。

(3分)A.128B.127C.126D.2554.含5个结点(元素值均不相同)的二叉顺序搜索法查表,平均搜索长度为_______。

(3分)A.54B.42C.36D.655.在分析折半搜索的性能时常加入失败结点,即外结点,从而形成扩充的二叉树。

若设失败结点i所在层次为I i,那么搜索失败到达失败所做的数据比较次数是__________。

(3.0分)A.I i+1 B.I i+2C.I i-1D.I i6.设有一个含200个表项的散列表,用线性探查法解决冲突,按关键码查询时找到一个表项的平均控查次数不超过1.5,则歼列存储空间应容纳________个表项。

(设搜索成功的平均搜索长度为s m=(1+1/(1-α))/2,其中α为装填因子)A.400B.526C.624D.6767.n个顶点的连通图至少有______条边。

(3.0分)A.n-1B.nC.n+1D.08.一个二叉树按顺序方式存储在一个一维数组中,如图01234567891011121314二、简答(共4小题,46.0分)1.如右所示的连通图,请画出:(1)以顶点①为根的深度优先生成树;(2)如果有关节点,请找出所有的关节点。

2.设有13个初始归并段,其长度分别为28,16,37,42,5,9,13,14,20,17,30,12,18。

数据结构模拟练习题1 参考答案

数据结构模拟练习题1 参考答案

数据结构模拟练习题1 参考答案一、单项选择题(每小题2分,共30分)1、算法的计算量的大小称为计算的( B )。

A.效率 B. 复杂性 C. 现实性 D. 难度2、静态链表中指针表示的是(B)A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址3、对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为(C)A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)4、在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:(D )。

A.p->next=s;s->next=p->next; B.p->next=s->next;p->next=s;C.p->next=s;p->next=s->next; D. s->next=p->next;p->next=s;5、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4, s6 , s5,s1,则栈的容量至少应该是( B )A.2B. 3C. 5D.66、串是一种特殊的线性表,其特殊性体现在(B)。

A.可以顺序存储 B.数据元素是一个字符C.可以链接存储 D.数据元素可以是多个字符7、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( D )。

A.9 B.11 C.15 D.不确定8、列说法中正确的是( A )。

A.任何一棵二叉树中至少有一个结点的度为2B.任何一棵二叉树中每个结点的度都为2C.任何一棵二叉树中的度肯定等于2D.任何一棵二叉树中的度可以小于29、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为( B )。

A.CBEFDA B. FEDCBA C. CBEDFA D.不定10、下列哪一种图的邻接矩阵是对称矩阵( B )。

数据结构清华大学模拟试题一答案

数据结构清华大学模拟试题一答案

清华大学模拟题一一.单项选择题(2分/题)1.一个栈的输入序列为12345,则下列序列中是栈的输出序列的是()。

知道这题的解题思路吗?A.23415B.54132C.31245D.142532.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为()。

A.r-fB.r-f+1C.(r-f) mod n +1D.(r-f+n) mod n3.二叉树在线索化后,仍不能有效求解的问题是()。

这题是线索化问题,可能你没看过。

可以等我去给你讲。

A.先序线索二叉树中求先序后继B. 中序线索二叉树中求中序后继C.中序线索二叉树中求中序前驱D. 后序线索二叉树中求后序后继4.求最短路径的FLOYD算法的时间复杂度为()。

(那Djstla的时间复杂度呢?)A.O(n)B.O(n+e)C.O(n2)D.O(n3)5.一棵左右子树不空的二叉树在先序线索化后,其空指针域数为()。

(知道是哪个指针域吗?就是最后一个访问的节点的右指针,因为它没有后继节点。

)A.0B.1C.2D.不确定6.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为()。

这题可要会哟@A.1140B.1145C.1120D.11257.在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是()。

(要知道为什么,这个我跟你讲过)A.快速排序B.希尔排序C.冒泡排序D.堆排序8.对有18个元素的有序表做折半查找,则查找A[3]的比较序列的下标依次为()。

(这题的数组下标应该说明一下是A[1..18])A.1-2-3B.9-5-2-3C.9-5-3D. 9-4-2-39.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是()。

这些题出的都不错!A.堆排序B.冒泡排序C.快速排序D.直接插入排序10.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为-1,右孩子的平衡因子为0,则做()型调整以使其平衡。

数据结构试题

数据结构试题

数据结构试题部分题目或答案有问题,现将已经发现的公布如下,同学在作这些模拟题的时候应着重做题方法的理解,遇到问题以教材或课件为准,不确定的地方可找同学商量或问我(1)试卷1第一套填空题第1题,试卷1第2套选择题第3题关于循环队列队头指针和队尾指针的约定与教材不一致,以教材或课件为准,实际上front指向的是队头元素,rear指向当前尚未被占用的第一个队列空间,队慢或队空的判定条件及入队/出队等操作具体可参考课件或教材(2)试卷1第一套应用题第5题,不声明邻接点顺序时默认编号最小的邻接点为第一邻接点,该图的深度优先遍历序列为*****,答案错。

此外,当给定邻接表时则邻接点顺序按照邻接表中的前后顺序确定,如试卷1第二套填空题第8题(3)试卷1第五套应用题第4题,两种方法处理冲突的方法下所求ASL值相等都为7/6(4)试卷1第五套填空题第8题答案给出的是小顶堆需满足的条件,大顶堆满足ki=k2i ki=k2i+1 (5)试卷1第一套填空题第9题模式匹配的BF算法以书中答案为准,两者区别在于,教材中存储字符串的数组的0号单元不存放有效字符,而试卷答案认为0号单元也放数组(6)试卷1第二套填空题第7题给定初始序列建堆未声明建大顶堆还是小顶堆,答案中给出的是小顶堆,大顶堆也要会建(7)试卷1第二套应用题第1题第4趟直接插入排序的结果应为(22,40,45,48,80,78);答案中给出的实际为第三趟,关键在于首元素自身有序不算一趟(8)试卷1第二套填空题第2题入栈操作以教材为准,教材中top是指向的栈顶(第一个空位置)的指针,与该套试卷中栈顶结构不一样,以教材为准(9)试卷1第三套填空题第12题答案中给出的不是拓扑序列,正确的是1423 (10)试卷1中多处遇到空指针NULL时写的是0而非NULL,实际两者皆可(11)试卷1第4套填空题第2题双向链表的删除答案错,应为p―llink-rlink=p-rlink; p-rlink-llink=p-llink;此外,注意课堂中讲的指针名和操作方法(12)第4套填空题第6题答案错,设哈夫曼树中共有99个结点,则该树中有____50_____个叶子结点;若采用二叉链表作为存储结构,则该树中有__100___个空指针域。

数据结构模拟试卷和答案

数据结构模拟试卷和答案

北京语言大学网络教育学院《数据结构》模拟试卷一注意:1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。

请监考老师负责监督。

2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。

3.本试卷满分100分,答题时间为90分钟。

4.本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。

一、【单项选择题】(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在答题卷相应题号处。

1、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则采用()存储方式最节省时间。

[A] 顺序表[B] 双链表[C]带头结点的双循环链表[D] 单循环链表2、队列操作的原则是()。

[A] 只能进行删除[B] 后进先出[C]只能进行插入[D] 先进先出3、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是()的二叉树。

[A] 空或只有一个结点[B] 高度等于其结点数[C]任一结点无左孩子[D] 任一结点无右孩子4、在下列排序方法中,()方法平均时间复杂度为0(nlogn),最坏情况下时间复杂度为0(n2)。

[A] 插入排序[B] 希尔排序[C] 快速排序[D] 堆排序5、对二叉树从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一个结点的左、右孩子中,其左孩子编号小于右孩子编号。

则可采用()次序的遍历实现编号。

[A] 先序[B] 中序[C]后序[D] 从根开始的层次遍历6、若用数组S[n]作为两个栈S1和S2的共用存储结构,对任何一个栈,只有当S[n]全满时才不能作入栈操作。

为这两个栈分配空间的最佳方案是()。

[A] S1的栈底位置为0,S2的栈底位置为n[B] S1的栈底位置为-1,S2的栈底位置为n/2[C] S1的栈底位置为0,S2的栈底位置为n-1[D] S1的栈底位置为0,S2的栈底位置为n/27、对一棵二叉排序树进行()遍历,可以得到该二叉树的所有结点按值从小到大排列的序列。

《数据结构》(本)模拟试题一

《数据结构》(本)模拟试题一

《数据结构》(本)模拟试题一一、填空题(每小题2分,共24分)1.一棵二叉树没有单分支结点,有6个叶结点,则该树总共有________个结点。

2.栈和队列的操作特点分别是___ ____和_____ ___。

3.设一棵完全二叉树,其最高层上最右边的叶结点的编号为奇数,该叶节点的双亲结点的编号为10,该完全二叉树一共有________个结点。

4.结构中的数据元素存在多对多的关系称为_____ ___结构。

5.按照二叉树的递归定义,对二叉树遍历的常用算法有__ _ _ 、___ _、__ __三种。

6.根据数据元素间关系的不同特性,通常可分为集合、线性、、四类基本结构。

7.数据结构中的数据元素存在一对多的关系称为________结构。

8.要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。

则比较的次数和算法的时间复杂度分别为________和________ 。

9.把数据存储到计算机中,并具体体现数据之间的逻辑结构称为________结构。

10.在一个单向链表中p所指结点之后插入一个s所指向的结点时,应执行___ ____ _和p->next=s;的操作。

11.结构中的数据元素存在一对一的关系称为________结构。

12.在二叉树的链式存储结构中,通常每个结点中设置三个域,它们是值域、。

二、单项选择题(每小题2分,共30分)1.针对线性表,在存储后如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。

A.单链表 B.双链表 C.单循环链表D.顺序表2.数据结构中,与所使用的计算机无关的是数据的()结构。

A.物理 B.存储 C.逻辑与物理D.逻辑3.以下特征中,()不是算法的特性。

A.有穷性 B.确定性 C.可行性 D.有0个或多个输出4.设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i 个元素),则移动元素个数为()。

A.n-i+1 B.n-i C.n-i-1 D.i5.栈的插入删除操作在()进行。

数据结构模拟试题(含答案)

数据结构模拟试题(含答案)

数据结构模拟试题(含答案)一、单选题(共100题,每题1分,共100分)1、在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个。

A、5B、6C、7D、4正确答案:B2、假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为()个。

A、15B、47C、16D、17正确答案:C3、设某哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。

A、100B、99C、102D、101正确答案:A4、一棵含18个结点的二叉树的高度至少为( )A、5B、4C、6D、3正确答案:A5、有关栈的描述,正确的是()A、栈是一种先进先出的特殊的线性表B、只能从栈顶执行插入、删除操作C、只能从栈顶执行插入、栈底执行删除D、栈顶和栈底均可执行插入、删除操作正确答案:B6、若采用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的()A、中序遍历算法B、前序遍历算法C、后序遍历算法D、层次遍历算法正确答案:A7、若要在单链表中的结点*p之后插入一个结点*s,则应执行的语句是( ) typedef struct node { char data[8]; struct node *next; } LinkStrNode;A、s->next=p; p->next=s->next;B、s->next=p->next; p->next=s;C、p->next=s->next; s->next=p;D、p->next=s; s->next=p->next;正确答案:B8、在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为( )。

A、O(n)B、O(1)C、O(n2)D、O(n/2)正确答案:A9、执行一趟快速排序能够得到的序列是()。

A、[45,34,12,41] 55 [72,63,27]B、[63,12,34,45,27] 55 [41,72]C、[12,27,45,41] 55 [34,63,72]D、[41,12,34,45,27] 55 [72,63]正确答案:D10、带权有向图G用邻接矩阵A存储,则顶点i 的入度等于A中()。

数据结构期末模拟试题01(有答案)

数据结构期末模拟试题01(有答案)

课程测试试题(卷)----------------------以下为教师填写--------------------I、命题院(部):数学与计算机科学学院II、课程名称:数据结构III、测试学期:20 -20 学年度第学期IV、测试对象:学院专业级班V、问卷页数(A4):页VI、答卷页数(A4):页VII、考试方式:闭卷(开卷、闭卷或课程小论文,请填写清楚)VIII、问卷内容:(请老师在出题时安排紧凑,填空题象征性的留出一点空格,学生将所有的答案做在答题纸上的规定位置,并写清楚大题、小题的题号)一、单选题(每题 2 分,共20分)1.对一个算法的评价,不包括如下()方面的内容。

A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.对线性表,在下列哪种情况下应当采用链表表示?( )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是( )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35.AOV网是一种()。

A.有向图 B.无向图 C.无向无环图 D.有向无环图6.采用开放定址法处理散列表的冲突时,其平均查找长度()。

A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同 D.高于二分查找7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。

A.值 B.函数 C.指针 D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。

全国自考数据结构模拟试卷(一)及答案

全国自考数据结构模拟试卷(一)及答案

2010年全国自考数据结构模拟试卷(一)一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项目中只有一个是符号题目要求的,请将其代码填写的括号内.错选、多选或未选均无分。

1.若用冒泡排序法对序列18,14,6,27,8,12,16,52,10,26,47,29,41,24从小到大进行排序,共要进行()次比较。

A.33B.45C.70D.912.假定一棵二叉树的结点为18个,则此二叉树的最大高度为(),最小高度为()A. 4B. 5C. 6D.183.一个具有N个顶点的有向图最多有()条边。

A.N(N-1)/2B.N(N-1)C.N(N+1)D.N(N+1)/24.设一个数组中,行下标i的范围是从1到8,列下标的范围是从1到10,假设此数组的初始存储地址是A,则如果将此数组按照列优先的顺序连续存放,则元素Q[5][8]的起始地址是()A. 1B.23C.24D.5295.下面程序的时间复杂性是()for(i=1;i<=n;i++)for(j=1;j<=m;j++){A[i][j]=i*j;}A. AB. BC. CD. D6.在下面的排序方法中,不需要通过比较关键字就能进行排序的是()A.箱排序B.快速排序C.插入排序D.希尔排序7.设散列函数为H(k)=k mod7,一组关键码为23,14,9,6,30,12和18,散列表T的地址空间为0.6,用线性探测法解决冲突,依次将这组关键码插入T中,得到的散列表为()A. AB. BC. CD. D8.排序的重要目的是为了以后对已排序的数据元素进行()A.打印输出B.分类C.查找D.合并9.线性表L=(a1,a2,…,a1,…,an),下列说法正确的是()A.每个元素都有一个直接前趋和直接后继B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小的D.除第一个元素和最后一个元素外,其余每个元素都有一个且仅有一个直接前趋和直接后继10.邻接表存储结构下图的广度优先遍历算法结构类似于树的()A.先根遍历B.后根遍历C.按层遍历D.先序遍历11.下列说法中正确的是()A.二叉树中任何一个结点的度都为2B.二叉树的度为2C.任何一棵二叉树中至少有一个结点的度为2D.一棵二叉树的度可以小于212.在一个具有n个单元的顺序栈中,假设栈底是存储地址的高端,现在我们以top作为栈顶指针,则作退栈操作时,top的变化是()A.top=top-1B.top=top+1C.top不变D.top不确定13.堆排序的最坏时间复杂度为()A. AB. BC. CD. D14.如果待排序的记录的规模很大,则在下面的排序方式中,我们最好不要选择使用()A.快速排序B.直接插入排序C.堆排序D.归并排序15.将含100个结点的完全二叉树从根这一层开始,每层从左到右依次对结点编号,根结点的编号为1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.
1.请给出每个顶点的度,入度和出度。(4)
2.请画出其邻接矩阵、邻接表、逆邻接表、十字链表。(12)
1.栈和链表是两种不同的数据结构()。
2.二叉树中每个结点的两棵子树的高度差等于1()。
3.任一查找树(二叉分类树)的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间()
4.若装填因子a为1,则向哈希表中散列元素时一定会产生冲突()
5.堆肯定是一棵平衡二叉树()
6.有向图的邻接表和逆邻接表中表结点的个数不一定相等。( )
struct record{int key; int others;};
int bisearch(struct record r[ ], int k)
{
int low=0,mid,high=n-1;
while(low<=high)
{
_______________;
if(r[mid].key==k) return(mid+1); else if(_____) high=mid-1;else low=mid+1;
int numberofleaf (JD *r)
{
int num;
if (r=NULL) num=0;
else if(r->firstchild==NULL) num =⑴+numberofleaf (r->nextbrother); else⑵;
return(num);
}
3.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。
14.在带头结点的双向循环链表中插入一个新结点,需要修改的指针域数量是()
A.2个B.6个C.3个D.4个
15.设图G的相邻矩阵如下图:则G的顶点数和边数分别为()
01111
10100
11011
10101
10110
A.4,5 B.4,10 C.5,6 D.5,8
16.用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为()
数据结构模拟试卷(一)
一、选择题(每题2分,20题,共40分)
1.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为()。
A.1140 B.1145
C.1120 D.1125
2.下面的序列中,()是堆。
A.1,510,6,7,8,9,2 B.1,2,8,4,3,9,10,5
5.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的出栈的不同排列个数为( )
A.4 B.5 C.6 D.7
6.关键路径是AOE网中的______。
A.从源点到汇点的最长路径
B.从源点到汇点的最短路径
C.最短的回路
D.活动的最早开始时间与最迟发生时间相等
7.已知数据元素为( 32,75,46,19,26,56,93,66 ),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为()。
C.9,8,7,6,4,8,2,1 D.9,8,7,6,5,4,3,7
3.二叉树上结点的左子树深度减去其右子树深度称为该结点的平衡因子。平衡二叉树中任意结点的平衡因子只能是()。
A.0 B.0,1 C.-1,0,1 D.1
4.栈和队列的共同特点是:
A.都是先进先出B.都是先进后出
C.只允许在端点处插入和删除元素D.没有共同点
A.2n+1 B.3n-1 C.3n D.3n+1
12.和顺序栈相比,链栈有一个比较明显的优势是()
A.通常不会出现栈满的情况
B.通常不会出现栈空的情况
C.插入操作更容易实现
D.删除操作更容易实现
13.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1,则T中的叶子数为()
A.5 B.6 C.7 D.8
A.8 B.5 C.6D.9
17.如下图所示,在下面的5个序列中,符合深度优先遍历的序列有多少()
aebdfc acfdeb aedfcb aefdcb aefdbc
A.5个B.3个C.2个D.4个
18.以下与数据的存储结构无关的术语是()
A.循环队列B.链表C.哈希表D.栈
19.下面关于m阶B树说法正确的是()
C.在进行插入、删除操作时,能更好地保证链表不断开
D.已知某个结点的位置后,能够容易找到它的直接前趋
10.已知一棵树的前序遍历是”GDAFEMHZ”,而中序遍历是”ADEFGHMZ”,求后序遍历?
A.ADEFGHMZ B.DAEFHZMG
C.AEFDHZMG D.AFEDHMZG
11.一个包含n个节点的四叉树,每个节点都有四个指向孩子节点的指针,这4n个指针中有多少个空指针?
A.4 B.5 C.7 D.6
8.下列说法不正确的是______。
A.图的遍历是从给定的源点出发,每一个顶点仅被访问一次
B.遍历的基本算法有两种:深度遍历和广度遍历
C.图的深度遍历不适用于有向图
D.图的深度遍历是一个递归过程
9.单循环链表的主要优点是()。
A.从表中任一结点出发都能扫描到整个链表
B.不再需要头指针了
}
return(0);
}
四、应用题(6题,共70分,如果是算法设计,请务必添加必要的注释!!)
1.试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。(10分)
2.将两个非递减有序的单链表归并成一个,仍并保持非递减有序。(10分)
3.求所有包含在串s中而t中没有的字符构成的新串r(12分)
{
int dep1,dep2;
dep1=;
dep2=;
if (dep1>dep2);
return;
}
}
2.一棵树以孩子兄弟表示法存储,递归算法numberofleaf计算并返回根为r的树中叶子结点的个数(NULL代表空指针)。
typedef struct node{struct node *firstchild , *nextbrother; }JD;
7.二叉树中所有结点个数是 -1,其中k是树的深度()。
8.向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。()
三、算法填空(每空2分,8空,共16分)
1.计算二叉数的的深度。
int BtreeDepth (BTreeNode *BT)
{
if (BT==NULL)
return 0;
else
4.设计先序遍历二叉树的非递归算法(12分)
5.设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成,它们在电文中出现的频率分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04},回答下列问题:
⑴为这7个字母设计哈夫曼编码并画出哈夫曼树(7)
⑵若对这7个字母进行等长编码,至少需要几位二进制数?(3)
①每个结点至少有两棵非空子树
②树中每个结点至多有m-1个关键字
③所有叶子在同一层上
④当插入一个数据项引起B树结点分裂后,树长高一层
A.①②③
B.②③
C.②③④
D.③
20.设串长为n,模式串长为m,则KMP算法所需的附加空间____。
A.O(m)
B.O(n)
C.O(m*n)
D.Oபைடு நூலகம்nlog2m)
二、判断题(每题3分,共8题,计24分)
相关文档
最新文档