数据结构(C语言)试卷(1)

合集下载

c语言版数据结构试题及答案

c语言版数据结构试题及答案

c语言版数据结构试题及答案在学习数据结构的过程中,掌握相关的试题及答案是非常重要的。

本文将为你提供一份C语言版的数据结构试题及答案,帮助你更好地掌握这门学科。

以下是一些常见的数据结构试题及详细的答案解析。

一、单项选择题1. 下列哪个不是数据结构中的逻辑数据结构?A. 栈B. 数组C. 队列D. 链表答案:B解析:数组是一种物理数据结构,用于存储一组相同类型的元素,而不是逻辑上的数据结构。

逻辑上的数据结构指的是在操作时需要考虑元素之间的逻辑关系,如栈、队列和链表。

2. 下列关于栈的叙述中,错误的是:A. 栈是一种后进先出(LIFO)的数据结构B. 栈的插入操作称为入栈C. 栈可以通过数组或链表来实现D. 栈的删除操作称为弹栈或出栈答案:C解析:栈可以通过数组或链表来实现,因此选项C是正确的。

二、填空题1. 将下列序列按照栈的顺序进行入栈,并给出每一步的栈的状态:5, 3, 8, 4, 2答案:- 入栈5,栈的状态:5- 入栈3,栈的状态:5, 3- 入栈8,栈的状态:5, 3, 8- 入栈4,栈的状态:5, 3, 8, 4- 入栈2,栈的状态:5, 3, 8, 4, 2三、简答题1. 请简要解释树的遍历算法中的前序遍历、中序遍历和后序遍历分别是如何进行的?答案:- 前序遍历:先访问当前节点,然后递归地遍历左子树,最后递归地遍历右子树。

- 中序遍历:先递归地遍历左子树,然后访问当前节点,最后递归地遍历右子树。

- 后序遍历:先递归地遍历左子树,然后递归地遍历右子树,最后访问当前节点。

四、编程题1. 请编写一个C语言函数,用于计算给定二叉树的节点个数。

答案:```c#include <stdio.h>struct TreeNode {int value;struct TreeNode* left;struct TreeNode* right;};int countNodes(struct TreeNode* root) {if (root == NULL) {return 0;}else {return 1 + countNodes(root->left) + countNodes(root->right);}}int main() {// 构建二叉树struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node1 = (struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* node2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));root->value = 1;node1->value = 2;node2->value = 3;root->left = node1;root->right = node2;node1->left = NULL;node1->right = NULL;node2->left = NULL;node2->right = NULL;int nodeCount = countNodes(root);printf("节点个数为:%d\n", nodeCount);return 0;}```解析:上述代码中,通过递归的方式计算二叉树的节点个数。

数据结构(c语言版)期末考试复习试题

数据结构(c语言版)期末考试复习试题

《数据结构与算法》(c语言版)期末考复习题一、选择题。

1.在数据结构中,从逻辑上可以把数据结构分为 C 。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.数据结构在计算机内存中的表示是指 A 。

A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。

A.逻辑B.存储C.逻辑和存储D.物理4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C . A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A .A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。

6.以下说法正确的是 D 。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。

(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是O(n2)。

s =0;for( I =0;i〈n; i++)for(j=0;j<n;j++)s +=B[i][j];sum = s ;9.下面程序段的时间复杂度是O(n*m)。

for(i =0;i〈n; i++)for(j=0;j<m;j++)A[i][j] =0;10.下面程序段的时间复杂度是O(log3n)。

i =0;while(i<=n)i = i * 3;11.在以下的叙述中,正确的是 B 。

A.线性表的顺序存储结构优于链表存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 B .A.数据元素具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等13.链表不具备的特点是 A 。

(完整版)数据结构c语言版期末考试复习试题

(完整版)数据结构c语言版期末考试复习试题

《数据结构与算法》复习题一、选择题。

1.在数据结构中,从逻辑上可以把数据结构分为 C 。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.数据结构在计算机内存中的表示是指 A 。

A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。

A.逻辑B.存储C.逻辑和存储D.物理(数据结构在计算机中的表示(映像)称为数据的物理(存储)结构)4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A 。

A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。

6.以下说法正确的是 D 。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。

(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是O(n2) 。

s =0;for( I =0; i<n; i++)for(j=0;j<n;j++)s +=B[i][j];sum = s ;9.下面程序段的时间复杂度是O(n*m) 。

for( i =0; i<n; i++)for(j=0;j<m;j++)A[i][j] =0;10.下面程序段的时间复杂度是O(log3n) 。

i =0;while(i<=n)i = i * 3;11.在以下的叙述中,正确的是B。

数据结构C语言版期末考试试题(有答案)

数据结构C语言版期末考试试题(有答案)

“数据结构”期末考试试题一、单选题(每小题2分,共12分)1.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。

A. HL=ps p一〉next=HLB. p一〉next=HL;HL=p3C. p一>next=Hl;p=HL;D. p一〉next=HL一〉next;HL一〉next=p;2.n个顶点的强连通图中至少含有( ).A。

n—l条有向边 B.n条有向边C。

n(n—1)/2条有向边 D。

n(n一1)条有向边3。

从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。

A.O(1) B。

O(n)C。

O(1Ogzn) D.O(n2)4.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。

A.24 B.48C. 72 D. 535.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。

A。

整形 B。

引用型C。

指针型 D。

常值引用型·6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )。

A.O(n) B.O(1)C.O(n2) D.O(10g2n)二、填空题(每空1分,共28分)1.数据的存储结构被分为——、-—、-—和——四种。

2.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为-—域和——域。

3.——中缀表达式 3十x*(2。

4/5-6)所对应的后缀表达式为——-—。

4.在一棵高度为h的3叉树中,最多含有——结点。

5.假定一棵二叉树的结点数为18,则它的最小深度为—-,最大深度为——·6.在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定--该结点的值,右子树上所有结点的值一定-—该结点的值.7.当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层--调整,直到被调整到——位置为止.8.表示图的三种存储结构为——、—-和——-.9.对用邻接矩阵表示的具有n个顶点和e条边的图进行任一种遍历时,其时间复杂度为——,对用邻接表表示的图进行任一种遍历时,其时间复杂度为--。

数据结构C语言版期末考试试题(有答案)

数据结构C语言版期末考试试题(有答案)

“数据结构”期末考试试题一、单选题(每小题2分,共12分)1.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( B)。

A. HL=ps p一>next=HLB. p一>next=HL;HL=pC. p一>next=Hl;p=HL;D. p一>next=HL一>next;HL一>next=p;2.n个顶点的强连通图中至少含有(B)。

A.n—l条有向边B.n条有向边C.n(n—1)/2条有向边D.n(n一1)条有向边3.从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。

A.O(1)B.O(n)C.O(1Ogzn)D.O(n2)4.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( D )。

A.24 B.48C. 72 D. 535.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为(B)参数,以节省参数值的传输时间和存储参数的空间。

A.整形B.引用型C.指针型D.常值引用型·6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( A )。

A.O(n) B.O(1)C.O(n2) D.O(10g2n)二、填空题(每空1分,共28分)1.数据的存储结构被分为顺序结构链接结构索引结构散列结构四种。

2.在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为值域和子表指针域。

3.——中缀表达式 3十x*(2.4/5—6)所对应的后缀表达式为————。

4.在一棵高度为h的3叉树中,最多含有—(3h一1)/2—结点。

5.假定一棵二叉树的结点数为18,则它的最小深度为—5—,最大深度为—18—·6.在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定—小于—该结点的值,右子树上所有结点的值一定—大于—该结点的值。

7.当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层—向上—调整,直到被调整到—堆顶—位置为止。

数据结构c语言版期末考试复习试题

数据结构c语言版期末考试复习试题

《数据结构与算法》复习题一、选择题。

1.在数据结构中,从逻辑上可以把数据结构分为 C 。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.数据结构在计算机内存中的表示是指 A 。

A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。

A.逻辑B.存储C.逻辑和存储D.物理(数据结构在计算机中的表示(映像)称为数据的物理(存储)结构)4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A 。

A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。

6.以下说法正确的是 D 。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。

(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是O(n2) 。

s =0;for( I =0; i<n; i++)for(j=0;j<n;j++)s +=B[i][j];sum = s ;9.下面程序段的时间复杂度是O(n*m) 。

for( i =0; i<n; i++)for(j=0;j<m;j++)A[i][j] =0;10.下面程序段的时间复杂度是O(log3n) 。

i =0;while(i<=n)i = i * 3;11.在以下的叙述中,正确的是B。

数据结构C语言版期末考试试题(有答案)

抽出时间去学习,凡事从小做起,不怕单调和重复,长期的积累坚持,想不成功,也难。

"数据结构”期末考试试题一、单选题(每小题2分共12分)1.在一个单链表HL中若要向表头插入一个由指针p指向的结点则执行()A. HL=ps p一〉next=HLB. p一>next=HL;HL=p3C. p一>next=Hl;p=HL;D. p一〉next=HL一>next;HL一〉next=p;2.n个顶点的强连通图中至少含有()A。

n—l条有向边 B.n条有向边C.n(n—1)/2条有向边D.n(n一1)条有向边3.从一棵二叉搜索树中查找一个元素时其时间复杂度大致为( )A.O(1) B。

O(n)C.O(1Ogzn)D.O(n2)4.由权值分别为38625的叶子结点生成一棵哈夫曼树它的带权路径长度为( )A.24 B.48C. 72 D. 535.当一个作为实际传递的对象占用的存储空间较大并可能需要修改时应最好把它说明为( )参数以节省参数值的传输时间和存储参数的空间A.整形 B。

引用型C。

指针型 D。

常值引用型·6.向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )A.O(n) B.O(1)C.O(n2) D.O(10g2n)二、填空题(每空1分共28分)1.数据的存储结构被分为——、——、——和--四种2.在广义表的存储结构中单元素结点与表元素结点有一个域对应不同各自分别为-—域和——域3.——中缀表达式 3十x*(2。

4/5—6)所对应的后缀表达式为—-——4.在一棵高度为h的3叉树中最多含有—-结点5.假定一棵二叉树的结点数为18则它的最小深度为-—最大深度为--·6.在一棵二叉搜索树中每个分支结点的左子树上所有结点的值一定-—该结点的值右子树上所有结点的值一定-—该结点的值7.当向一个小根堆插入一个具有最小值的元素时该元素需要逐层-—调整直到被调整到--位置为止8.表示图的三种存储结构为——、——和---9.对用邻接矩阵表示的具有n个顶点和e条边的图进行任一种遍历时其时间复杂度为—-对用邻接表表示的图进行任一种遍历时其时间复杂度为—-10.从有序表(1218304356788295)中依次二分查找43和56元素时其查找长度分别为—-和-—·11.假定对长度n=144的线性表进行索引顺序查找并假定每个子表的长度均为则进行索引顺序查找的平均查找长度为——时间复杂度为——·12.一棵B-树中的所有叶子结点均处在——上13.每次从无序表中顺序取出一个元素把这插入到有序表中的适当位置此种排序方法叫做——排序;每次从无序表中挑选出一个最小或最大元素把它交换到有序表的一端此种排序方法叫做-—排序14.快速排序在乎均情况下的时间复杂度为——最坏情况下的时间复杂度为—-三、运算题(每小题6分共24分)1.假定一棵二叉树广义表表示为a(b(cd)c(((8)))分别写出对它进行先序、中序、后序和后序遍历的结果先序:中序;后序:2.已知一个带权图的顶点集V和边集G分别为: V={012345};E={(01)8(02)5(03)2(15)6(23)25(24)13(35)9(45)10}则求出该图的最小生成树的权最小生成树的权;3.假定一组记录的排序码为(4679563840845042)则利用堆排序方法建立的初始堆为—-4.有7个带权结点其权值分别为378261014试以它们为叶子结点生成一棵哈夫曼树求出该树的带权路径长度、高度、双分支结点数带权路径长度:-—高度:-—双分支结点数:-—四、阅读算法回答问题(每小题8分共16分)1.VOldAC(List&L){InitList(L);InsertRear(L;25);InsertFront(L50);IntaL4]={58121536};for(inti=0; i〈5; i++)if (a[i]%2==0)InsertFront(La[i]);elselnsertRear(La[i]);}该算法被调用执行后得到的线性表L为:2.void AG(Queue&Q){InitQueue(Q);inta[5]={6125158};for(int i=0;i〈5; i++)QInsert(Qa[i]);QInsert(QQDelete(Q));QInsert(Q20);QInsert(QQDelete(Q)十16);while(!QueueEmpty(Q))cout〈<QDelete(Q)〈〈”; }该算法被调用后得到的输出结果为:五、算法填空在画有横线的地方填写合适的内容(每小题6分共12分)1.从一维数组A[n)中二分查找关键字为K的元素的递归算法若查找成功则返回对应元素的下标否则返回一1IntBinsch(ElemTypeA[]Intlowint highKeyTypeK){if(low〈=high){int mid=(low+high)/2;if(K==A[mid].key)—-;else if (K<A[mid].key)-—;else ;}else return—l;}2.已知二叉树中的结点类型BinTreeNode定义为:structBinTreeNode{ElemType data;BinTreeNode*left*right};其中data为结点值域left和right分别为指向左、右子女结点的指针域下面函数的功能是返回二叉树BT中值为x的结点所在的层号请在划有横线的地方填写合适内容Int NodeLevel(BinTreeNode * BTElemType X){if(BT:=NULL)return 0;//空树的层号为0else if(BT一>data==X)return 1; //根结点的层号为1 //向子树中查找x结点else{int cl=NodeLevel(BT一>leftX);if(cl>=1)return cl+1;int c2=;if-—;//若树中不存在X结点则返回oelse return 0;}}六、编写算法(8分)按所给函数声明编写一个算法从表头指针为HL的单链表中查找出具有最大值的结点该最大值由函数返回若单链表为空则中止运行EIemType MaxValue(LNOde*HL);”数据结构”期末考试试题答案一、单选题(每小题2分共12分)评分标准;选对者得2分否则不得分1.B 2.B 3.C 4.D 5.B 6.A二、填空题(每空1分共28分)1.顺序结构链接结构索引结构散列结构(次序无先后) 2.值(或data) 子表指针(或sublist)3.3 x 2.4 5/6一*十4.(3h一1)/25. 5 186.小于大于(或大于等于)7.向上堆顶8.邻接矩阵邻接表边集数组(次序无先后)9.O(n2) O(e)10. 1 311.13 O()12.同一层13.插人选择14.O(nlog2n) O(n2)三、运算题(每小题6分共24分)1.先序:abcdefe //2分中序:cbdaf8e //2分后序:cdbefea //2分2.最小生成树的权:31 //6分3.(8479564240465038)//6分4.带权路径长度:131 //3分高度:5 //2分双分支结点数:6 //1分四、阅读算法回答问题(每小题8分共16分)评分标准:每小题正确得8分出现一处错误扣4分两处及以上错误不得分1.(361285025515)2.5 15 8 6 20 28五、算法填空在画有横线的地方填写合适的内容(每小题6分共12分)1.feturn mid //2分returnBinsch(Alowmid一1K) //2分returnBmsch(Amid+1highK)//2分2.NodeLevel(BT一>rightX) //3分(c2〉=1)returnc2十1 //3分六、编写算法(8分)评分标准:请参考语句后的注释或根据情况酌情给分ElemType MaxValue(LNodeO* HL){if (HL==NUlL){//2分cerr〈<”Linked llst is empty!"<〈endl;exit(1);}ElemTypemax:HL一〉data;//3分LNOde*p=HI一>next; //4分while(P!:NULL){ //7分if(max<p一>data)max=p一〉data;p=p一〉next;}returnmax;//8分}数据结构复习资料一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科2. 数据结构被形式地定义为(DR)其中D是数据元素的有限集合R是D上的关系有限集合3。

数据结构(C语言)【经典试题库】附含答案解析

《数据结构与算法》复习题选择题1.在数据结构中,从逻辑上可以把数据结构分为 C 。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.部结构和外部结构2.数据结构在计算机存中的表示是指 A 。

A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。

A.逻辑 B.存储 C.逻辑和存储 D.物理4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储C 。

A.数据的处理方法 B.数据元素的类型C.数据元素之间的关系 D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A 。

A.各结点的值如何 B.结点个数的多少C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。

6.以下说确的是 D 。

A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。

(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进 C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是 O(n2) 。

s =0;for( I =0; i<n; i++)for(j=0;j<n;j++)s +=B[i][j];sum = s ;9.下面程序段的时间复杂度是 O(n*m) 。

for( i =0; i<n; i++)for(j=0;j<m;j++)A[i][j] = 0;10.下面程序段的时间复杂度是 O(log3n) 。

i = 0;while(i<=n)i = i * 3;11.在以下的叙述中,正确的是 B 。

A.线性表的顺序存储结构优于链表存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着B 。

数据结构题集c语言版考试题及答案

数据结构题集c语言版考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构是指()。

A. 用一组地址连续的存储单元依次存储线性表的元素B. 用一组地址不连续的存储单元依次存储线性表的元素C. 用数组来存储线性表的元素D. 用链表来存储线性表的元素答案:A2. 在一个长度为n的顺序表中,删除第i个元素(1≤i≤n)时,需要移动()个元素。

A. i-1B. n-iC. n-i+1D. i答案:B3. 对于一个有n个结点的线性表,采用链式存储结构时,进行查找第i个元素(1≤i≤n)的时间复杂度为()。

A. O(1)B. O(n)C. O(log2n)D. O(n^2)答案:B4. 在二叉树的遍历过程中,若一个结点的左子树为空,则该结点的右子树()。

A. 一定为空B. 一定不为空C. 可能为空,也可能不为空D. 以上说法都不对答案:C5. 在二叉排序树中,若某结点的左子树非空,则左子树中的所有结点的值()。

A. 都小于该结点的值B. 都大于该结点的值C. 都等于该结点的值D. 都大于等于该结点的值答案:A6. 一个具有n个顶点的连通图,其边数最少为()。

A. n-1B. nC. n+1D. 2n答案:A7. 在图的遍历中,深度优先搜索算法所对应的数据结构是()。

A. 栈B. 队列C. 链表D. 数组答案:A8. 哈希表的冲突解决方法中,开放定址法的特点是()。

A. 装填因子较大B. 装填因子较小C. 装填因子不受限制D. 以上说法都不对答案:B9. 快速排序算法的时间复杂度为()。

A. O(n)B. O(nlogn)C. O(n^2)D. O(logn)答案:B10. 用链表表示线性表的优点是()。

A. 插入和删除操作不需要移动元素B. 节省存储空间C. 可以方便地随机访问D. 可以动态分配存储空间答案:A二、填空题(每题2分,共20分)1. 在顺序表中,若p是指向第i个元素的指针,则p+5表示指向第()个元素的指针。

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

1
成都东软信息技术学院
200 ~200 学年第 学期期末试题——数据结构(C语言)

题号 一 二 三 四 五 六 总分
分数

本课程为闭卷考试,试卷共六道大题,试卷满分100分,考试时间120分钟。
一.选择题(10×2分):共10小题,请将答案填入题中的括号中,每小题只有一个正确答
案,错选或不选均不给分。
1.组成数据的基本单位是( )
A.数据项 B.数据类型
C.数据元素 D.数据变量
2.线性表的链式存储实现有利于( )运算。
A.插入 B.读表元
C.查找 D.定位
3.二叉树第i(i≥1)层最多有( )个结点。
A.2i B.2i
C.2i-1 D.2i -1
4.设单链表中指针p指向结点A,若删除A后的结点存在,则需要修改指针的操作为( )。
A.p->next=p->next->next B.p=p->next
C.p=p->next->next D.p->next=p
5.设一数列的输入顺序为1,2,3,4,5,6,通过栈操作不可能排成的输出序列为( )。
A.3,2,5,6,4,1 B.1,5,4,6,2,3
C.2,4,3,5,1,6 D.4,5,3,6,2,1
6.如果结点A有3个兄弟,而且B为A的双亲,则B是度为( )
A.3 B.4
C.5 D.1
7.设循环队列Q[0..N-1]的头尾指针为F.R,当插入元素时尾指针R加1,头指针F总是指
向队列中第一个元素的前一个位置,则队列中元素计数为( )。
A.R-F B.N-(R-F)
C.(R-F+N)%N D.(F-R+N)%N
8.若给定的关键字集合为{20,15,14,18,21,36,40,10},一趟快速排序结束后,键值的排序为
( )。
A.10,15,14,18,20,36,40,21 B.10,15,14,18,20,40,36,21
C.10,15,14,20,18,40,36,21 D.15,10,14,18,20,36,40,21
9.设有100个元素,用二分法查找时,最大比较次数是( ),最小比较次数是( )。
A.25 B.7
C.10 D.1
10.具有2000个结点的二叉树,其高度至少为( )。
A.9 B.10
2

C.11 D.12
二.填空题(20分):每空2分,
1.前序序列和中序序列相同的二叉树为 。
2.具有64个结点的完全二叉树的深度为 。
3.数据结构讲述的三大关系是 、 、 。
4.已知二叉树中的叶子树为50,仅有一个孩子的结点数为30,则总结点数为 。
5.简单选择排序在最好情况下所做的交换元素次数为 。
6.队列的原则是 。
7.
快速排序算法在最差的情况下其时间复杂度是 。
8.顺序存储的队列如果不采用循环方式,则会出现 问题。

三.简答题(4×5分)
1. 试比较顺序存储和链式存储的优缺点。(5分)

2. 简述栈和队列这两种数据结构的相同点和不同点。(5分)
3. 已知一棵二叉树的中序序列和后序序列分别是BDCEAFHG和DECBHGFA,试画出这
棵二叉树。(5分)

4. 采用简单选择排序对线性表(26,15,12,16,5,30)进行排序,进行交换的第一对元素是哪
两个元素?在什么情况下,第一趟不需要进行元素的交换?(5分)

四.判断题(5×2分)
1.如果某数据结构的每一个元素都最多只有一个直接前驱和一个直接后继,则该数据结构
必为线性表。( )
2.若有一个叶子结点是某子树的中序遍历的最后一个结点,则它必是该子树的先序遍历的
最后一个结点。( )
3

3.进栈操作时,必须判断栈是否已满。( )
4.如果某排序算法是稳定的,那么该方法一定具有实际应用价值。( )
5.折半查找法的前提之一是线性表有序。( )

五.程序填空题(3×5分)
1.以下是采用冒泡排序法对数组a进行排序,完成程序。(4分)
bsort(int a[], int n)
{
int n, int i,int j, int temp;
for (i= ;jfor (j=n-2;j>=i;--j) {
if( ) {
temp=a[j];a[j]=a[j+1];a[j+1]=temp;
}
}
}
}
2.在单链表(表头指针为head)的元素中找出最后一个值为e的元素,返回其指针;如果
找不到,返回NULL。完成以下程序。(6分)
typedef srruct LinkNode {
int data;
struct LinkNode *next;
} Node;

Node *search_link(Node *head, int e) {
Node *p, *q;
q= ;
for(p=head; ;p=p->next) {
if(p->data = = e) {
;
}
}
return q;
}
3.下列算法是输出一棵二叉树的第i层的所有结点的值。假定根结点是第1层,完成以下
程序。(5分)
typedef srruct LinkNode {
int data;
struct LinkNode *lchild, *rchild;
} Node;

void outi(Node *tree, int i) {
if (tree == NULL) return;
if(i==1) {
4

printf(“%d\n”,tree->data);
return;
}
outi( );
outi( );
}

六.算法设计题(15分)
1.编写算法,删除顺序表第i个元素。(8分)
已知顺序表的数据结构如下:
typedef struct
{
int data[100];
int last;
} SeqList;

2.编写算法,求不带头结点的单链表的表表长。(7分)
已知单链表结点数据结构如下:
typedef struct node
{
int data;
struct node *next;
} LNode, *LinkList;
5

答案及评分标准:
数据结构(C语言)答案及评分标准
一.选择题(10×2分):每小题只有一个正确答案,错选或不选均不给分。
1 2 3 4 5 6 7 8 9 10
C A C A B B C A B C

二.填空题(20分):每空2分。
1.没有左子树的二叉树; 2.7; 3.一对一的线性关系 一对多的树关系 多对多的图关系;
4.129; 5.0; 6.先进先出; 7.O(n2); 8.假溢出。

三.简答题(4×5分)
1.顺序存储查找效率高,插入和删除效率低;链式存储插入和删除效率高,查找效率低。
2.栈和队列都是操作受限的线性表。栈是先进后出,操作在一端进行;队列是先进先出,
插入在一端,删除在另一端进行。
3.

4.交换的第一对元素是26和15,第一个元素比其他元素都小时不需要进行元素的交换。
四.判断题(5×2分)
1.×;2.√;3.×;4.×;5.√

五.程序填空题(3×5分)
1.0;a[j+1]lchild,i-1;tree->rchild,i-1

六.算法设计题(15分)
1.int delete_SeqList(SeqList *L,int i)
{
int j;
if (i <1 || i>L->last+1) {
printf(“不存在第i个元素”);

H B F C A D E
A
6

return 0;
}

for (j=i; j<=L->L->last; ++j) {
l->data[j-1] = L->data[j];
}
L->last--;
return 1;
}

2.int length_LinkList(LinkList L)
{
LNode *p=L;
int j = 0
while(p->next != NULL) {
p = p->next;
++j;
}
return j;
}

相关文档
最新文档