2008-09(1)数据结构期末试卷(C)

合集下载

《数据结构》期末考试(计算机科学学院)

《数据结构》期末考试(计算机科学学院)

北方民族大学注意事项:本试卷适用于08级计算机应用技术专业学生使用 题号 一 二 三 四 总分 核分人 得分1、从逻辑上可以把数据结构分为( )两大类。

A .动态结构、静态结构B .顺序结构、链式结构C .线性结构、非线性结构D .初等结构、构造型结构 2、在下面的程序段中,对x 的赋值语句的频度为( )。

FOR i:=1 TO n DOFOR j:=1 TO n DO x:=x+1;A . O(2n)B .O(n)C .O(n 2)D .O(log2n)3、在单链表指针为p 的结点之后插入指针为s 的结点,正确的操作是( )。

A .p->next=s;s->next=p->next; B .s->next=p->next;p->next=s; C .p->next=s;p->next=s->next; D . p->next=s->next;p->next=s;4、设栈的输入序列是1,2,3,4,则( )不可能是其出栈序列。

A .1,2,4,3 B .2,1,3,4 C .1,4,3,2 D .4,3,1,2 E .3,2,1,45、栈在( )中应用。

A .递归调用B .子程序调用C .表达式求值D .A ,B ,C 6、串的长度是指( )A .串中所含不同字母的个数B .串中所含字符的个数C .串中所含不同字符的个数D .串中所含非空格字符的个数7、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( )A .9B .11C .15D .不确定8、设森林F 中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。

与森林F 对应的二叉树根结点的右子树上的结点个数是( )。

A .M1 B .M1+M2 C .M3 D .M2+M39、设无向图的顶点个数为n ,则该图最多有( )条边。

数据结构(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语言版试题大全(含答案)

数据结构c语言版试题大全(含答案)数据结构C语言版试题大全(含答案)第一章:基本概念与算法设计1.1 数据结构的定义与特点数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它包括了数据的存储、组织和管理方式。

数据结构的特点包括以下几个方面:- 数据元素之间存在某种关系,构成逻辑结构- 对数据元素的操作对应于对其逻辑结构的操作- 数据结构有存储结构,包括顺序存储结构和链式存储结构- 算法是对数据结构的操作步骤的描述和实现1.2 算法的基本概念算法是解决特定问题或完成特定任务的一系列操作步骤。

算法的基本概念包括以下几个方面:- 有穷性:算法必须能在有限步骤内完成- 确定性:算法的每一步骤必须有确定的含义和结果- 可行性:算法的每一步骤必须可行,能够通过执行有限次数实现- 输入:算法接受的输入数据是原始问题的实例- 输出:算法产生的输出数据与输入有明确的关系1.3 算法的描述方法算法可以用自然语言、伪代码或流程图来描述。

常用的伪代码描述方法包括结构化语言和算法描述语言,结构化语言包括顺序结构、分支结构和循环结构。

第二章:线性结构2.1 线性表的定义与基本操作线性表是n个数据元素的有限序列,其中相邻元素之间存在唯一的前驱和后继关系。

线性表的基本操作包括插入、删除、查找和修改等。

2.2 数组与广义表数组是指具有相同数据类型的一组数据元素的集合,可以通过下标访问元素。

广义表是线性表的推广,其中元素可以是基本数据类型或另一个广义表。

第三章:树与二叉树3.1 树的定义与基本术语树是n(n≥0)个结点的一个有限集合,其中满足以下条件:- 有且仅有一个特定的称为根的结点- 其余结点可分为m(m≥0)个互不相交的有限集合,每个集合本身又是一棵树3.2 二叉树的定义与性质二叉树是指每个结点最多有两个子结点的树结构。

二叉树的性质包括以下几个方面:- 深度为k的二叉树最多有2^k-1个结点- 一棵二叉树的第i层最多有2^(i-1)个结点- 在二叉树的第i层上至多有2^(n-i+1)-1个结点(n为树的深度)第四章:图4.1 图的基本概念与术语图是由顶点的有穷非空集合和边的有穷集合组成的。

数据结构c语言期末考试题库及详解答案

数据结构c语言期末考试题库及详解答案

数据结构c语言期末考试题库及详解答案数据结构C语言期末考试题库及详解答案一、选择题1. 在数据结构中,线性表的顺序存储结构被称为:A. 链式存储结构B. 栈C. 队列D. 数组答案:D2. 下列关于栈的描述,错误的是:A. 栈是一种特殊的线性表B. 栈的特点是后进先出C. 栈顶元素是最后插入的元素D. 栈的插入和删除操作都发生在栈顶答案:C二、填空题1. 在C语言中,定义一个具有10个元素的整型数组可以使用语句:________。

答案:int arr[10];2. 链表与数组相比,其优点是________。

答案:动态内存分配,不需要预先知道数据规模三、简答题1. 简述二叉树的遍历方法有哪些,并说明它们的特点。

答案:二叉树的遍历方法主要有前序遍历、中序遍历和后序遍历三种。

前序遍历首先访问根节点,然后递归地遍历左子树和右子树;中序遍历首先遍历左子树,然后访问根节点,最后遍历右子树;后序遍历首先遍历左子树和右子树,最后访问根节点。

每种遍历方法都可以用来对二叉树进行不同的操作和分析。

2. 什么是哈希表?它在实际应用中有哪些优点?答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。

它的优点包括:快速的数据访问速度,因为哈希表通常在常数时间内完成查找;动态的内存分配,可以根据需要调整存储空间;以及灵活的键值对存储方式。

四、编程题1. 编写一个C语言函数,实现单链表的逆序输出。

答案:```c#include <stdio.h>#include <stdlib.h>typedef struct Node {int data;struct Node *next;} Node;void reversePrint(Node *head) {if (head == NULL) return;reversePrint(head->next);printf("%d ", head->data);}int main() {Node *head = (Node *)malloc(sizeof(Node));head->data = 1;head->next = NULL;// 假设链表已经构建完毕reversePrint(head);return 0;}```2. 请实现一个C语言函数,用于计算一个字符串中不同字符的数量。

2008--2009 C语言笔试真题

2008--2009 C语言笔试真题

2009.9(1)下列数据结构中,属于非线性结构的是(C )。

A)循环队列B)带链队C)二叉树D)带链栈(3)对于循环队列,下列叙述中正确的是(D )。

A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(8)数据库管理系统是(B )。

A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(11)以下叙述中正确的是( D)。

A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(26)有以下程序# include <stdio.h>main(){ int m=1, n=2, *p=&m, *q=&n, *r;r=p; p=q; q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是(B )。

A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2(28)有以下程序# include <stdio.h># include <string.h>main(){ char str[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序运行后的输出结果是(C )。

A)9,One*World B)9,One*Dream! C)10,One*Dream! D)10,One*World(30)有以下程序# include <stdio.h># include <string.h>main(){ char a[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是(B )。

2008年数据结构期未试题

2008年数据结构期未试题

江西师范大学计算机科学技术专业 08-09 第 1 学期《数据结构》期末考试试题 A课程代号:262208 注意事项:请将答案全部写到答题纸上,并注明题号! 一,单项选择题(每小题 2 分,共 12 分)1.借助结点的存储地址与其值之间映射关系建立的存储结构是( ) A.顺序结构 B.链式结构 C.索引结构 D.散列结构 2.给定代码 int i=1, n=100; while(i<n) i=i*2; 其渐进时间复杂度是( ) A. O(1) B. O(n) C.O(logn) D.O(nlogn) 3.图的深度优先遍历与树的_______遍历方式相似. A. 前序遍历 B. 后序遍历 C.层次遍历 D. 没有那种方式与其相似 4.前序遍历和中序遍历序列相同的二叉树,其特点是( ) A. 所有结点不能有左子树 B. 所有结点不能有右子树 C. 不含有 1 度结点 D. 该二叉树只有根存在 5.下列排序中,属于稳定的排序方式是( ) A.快速排序 B.堆排序 C.希尔排序 D.归并排序 6.队列和栈的主要区别是( ) A.逻辑结构不同 B.所包含的运算个数不同 C.存储结构不同 D.限定插入和删除的位置不同二,程序填空(每空 3 分,共 18 分)1.在顺序循环队列中查找元素 x,若找到,返回其所在位置;否则,返回‐1. #define n 100 typedef struct{ int a[n]; int front,rear; }Queue; int findX(Queue *p, int x){int i; i= (1) while( ( (2) ) i++; ; if (p->a[i]==x x) return i; n return -1; n } 2, 下类代码实 shell 排序. 实现 假定所 len 个关 所有 关键字已经存储在数组从 a[0] 存 从 到 a[len-1 1]的空间中. . void s shell(int a[], int len){ t t int i,j,d,t; for( (d=len/2; d>=1; d= =d/2) fo or( (3) ) ; i<l len; i++){ { t=a[i]; (4) ; while( (5) ){ (6 6) ; j=j j-d; } a[j+d]=t t; } }三,综合解答 答题(每小题 10 分,共 5 分) 题 501,给定图 1 所示的有向 向网络 G,要 要求: a. 给出对应 应的邻接表图 图; b. 根据邻接 接表,写出图 图的深度,广 广度优先遍历 历 图 1 有向网络 G 1 G 结果. 2,针对图 1 所示的有向 向网络 G,基 Dijkstra 算 基于 算法将如下表 表格补充完整 整. 其中 A,…, 的下标分 ,F 分别对应到 0 0,…,5. 距离向量 d 量 路径向 p 向量 循 集合 S v S 环 0 1 2 3 4 5 0 1 2 3 4 5 初始化 {A} 初 ‐ 1 2 3 4 5 3,S={12,10,13,23,14,15,17,27,22,33}依次按散列方式存入数组 a[10]中,其中散列函数为 H(key)=key%10,冲突处理的方法是线性探测再散 列.将下面数组 a 存储各元素的位置示意图填写完整. 0 数组 a 1 2 3 4 5 6 7 8 9 4.假设通信电文使用的字符集为{a,b,c,d,e,f,g},字符的哈夫曼编码依次为: 0110,10,110,111,00,0111 和 010. (1)请根据哈夫曼编码画出此哈夫曼树,并在叶子结点中标注相应字符; (2)若这些字符在电文中出现的频度分别为:3,35,13,15,20,5 和 9,求 该哈夫曼树的带权路径长度. 5,判断(10,30,16,23,19,15,47,27)是否为堆,若不是,将其调整 为小根堆(即根最小的堆) .四,算法设计题(每小题 10 分,共 20 分)1,给定字符串 s,其长度为 n.s 中只包含英文字母(大/小写) ,空格.完 成函数 count,统计各字符的个数,放入长度为 27 的数组 t 中,其中 t[0] 记录字符'a'和'A'的个数;t[1]记录字符'b'和'B'的个数;……;t[25] 记录字符'z'和'Z'的个数; t[26]记录空格的个数. 假设数组 t 的所有元素 初值已设置为 0(10 分) . count(char *s ,char t[], int n){ /*补充完整 */ } 2,在二叉排序树 t 中查找元素 x.如 t 为 NULL,生成结点存储元素 x,并 将其作为二叉排序树的根;否则,若找到,则无需插入;若未找到,则生成 结点存储元素 x,并将该节点插入到二叉排序树的合适位置. (10 分) typedef struct tt{ int d; struct tt *L,*R; }btree; btree* find_insert(btree *t, int x){ /*补充完整 */ }江西师范大学计算机科学技术专业 师 计 学 业 据 》 试 08-09 第 1 学期《数据结构》期末考试试题 A 参考答案 考课程代号:262208 2 注意事项:请 请将答案全部 部写到答题纸上,并注明题号! 纸 明一,单项选择 择题(每小题 2 分,共 12 分) 题 21.D 2.C 3.A 4. C .A 5.D二,程序填空 空(每空 3 分 分,共 18 分)6.D1.在顺序循 循环队列中查 查找元素 x,若 若找到,返回 回其所在位置;否则,返回‐1. 置 回 (1)(p->f front +1)% n; (2)i!=re ear && p->a[i]!=x 2,下类代码 码实现 shell 排序. l (3)i=d d; (4)j=i-d (5)j>=0 && a[j]> >t; (6)a[j+d d]=j三,综合解答 答题(每小题 10 分,共 5 分) 题 50图 1 有向网络 G 1,给定图 1 所示的有向 向网络 G,要 要求: a. 给出对应 应的邻接表图; b. 根据邻接 接表,写出从 A 点开始的 的深度和广度优先遍历结果. 果 解答:参考邻 邻接表如下: : 深度优先遍历序列为: A‐>B‐>C‐> >D‐>E‐>F 广度优先遍历序列为: A‐>B‐>C‐> >F‐>D‐>E 注意:邻接表结点的位置可能不同, 遍历序列各异.请阅卷 卷老师自行掌 掌控 2,针对图 1 所示的有向 向网络 G,基 Dijkstra 算 基于 算法将如下表格补充完整. 表 整 其中 A,…, 的下标分 ,F 分别对应到 0 0,…,5. 路径向量 p 路 距离 离向量 d 循 集合 S S v 环 0 1 2 3 4 5 0 1 2 3 4 5 初始化 {A} 初 ‐ 0 12 1 ∞ ∞ ∞ ‐1 0 0 ‐1 ‐1 ‐1 10 1 {A,C} 2 2 0 12 1 15 13 24 ‐1 0 0 2 2 2 10 2 {A,C,B B} 1 1 0 12 1 15 13 16 ‐1 0 0 2 2 1 10 3 {A,C,B B,E} 4 4 0 12 1 15 13 16 ‐1 0 0 2 2 1 10 4 {A,C,B B,E,D} 3 3 0 12 1 15 13 16 ‐1 0 0 2 2 1 10 5 {A,C,B B,E,D,F} F 0 12 1 15 13 16 ‐1 0 0 2 2 1 F 10 3,S={12,10,13,23, ,14,15,17,27,22,33}依次按散 散列方式存入 入数组 a[10]中,其中散列函数为 H(key)=k 为 key%10,冲突 突处理的方法 法是线性探测 测再散 列.将下面数 a 存储各 数组 各元素的位置 置示意图填写 写完整. 0 数组 a 10 1 33 2 12 3 13 4 23 5 14 6 15 7 17 8 27 9 9 22 2 4.假设通信 信电文使用的 的字符集为{a a,b,c,d,e,f,g},字符的哈夫曼编码依次为: 夫 次 0110,10,1 110,111,0 00,0111 和 0 010. (1)请根据哈 哈夫曼编码画出此哈夫曼树 树,并在叶子 子结点中标注相应字符; 注 (2)若这些字符在电文中出现的频度分 分别为:3,35,13,15,20,5 和 9,求 5 该哈夫曼树的带权路径长 长度. 树的带权路径长 径 (2)该哈夫曼树 分) 度是:253(4 分 (1)对应 应的哈夫曼树 树(6 分) 0,30,16,23,19,15,47,27)是 是否为堆,若 若不是,先画 画出初 5,判断(10 始堆形,然后 后将其调整为 为小根堆(即 即根最小的堆 . 堆)(1)初始 始堆形 2 分(2 2)小根堆 8 分四,算法设计 计题(每小题 10 分,共 2 分) 题 201,给定字符 s,其长度 n.s 中 符串 度为 中只包含英文字母(大/小 小写) ,空格.编写 函数,统计各 各字符的个数 数,放入长度 27 的数 t 中,其 t[0]记录字 度为 数组 其中 字符'a' 和'A'的个数; t[1]记录字符'b'和'B'的个 个数; ……; t[25]记录字符 符'z'和'Z'的个 个数; 格的个数.假 假设数组 t 的 的所有元素初 初值均为 0(10 分) . t[26]记录空格 count (ch har *s ;ch har t[]; int n){ int i, k; for(i=0; i<n; i+ ++){ [i]>='a'& &&s[i]<='z z'){k=s[i i]-'a'; t[k]++; } if (s[ if (s[ [i]>='A'& &&s[i]<='Z Z'){k=s[i i]-'A'; t[k]++; } if (s[ [i]==' ') t[26]++; ; } } 2,在二叉排 排序树 t 中查 查找元素 x.如 t 为 NUL LL,表示空树 树,生成结点 点存储 元素 x,并将其作为二叉 叉排序树的根 根;否则,若 若找到,则无 无需插入;若 若未找 到,则生成结 结点存储元素 x,并将该 素 该节点插入到 到二叉排序树 树的合适位置 置. (10 分) typedef s struct tt{ { int d; ; struct tt *L,*R R; }btree; btree* fi ind_insert t(btree * *t, int x x){ btree *p,*temp p; p=(btre *)mall ee loc(sizeof f(btree)); p->d=x; p->L=p; ->R=NULL; if ( t= ==NULL ) {t=p; ret turn t;}if ( t->d==x ) return t; if (x<t->d && t->L==NULL) {t->L=p; return t;} if ( x<t->d && t->L!=NULL){ temp=find_insert(t->L,x); return t;} if (x>=t->d&& t->R==NULL ){t->R=p; return t;} if (x>=t->d&& t->R!=NULL ){ temp= find_insert(t->R,x); return t;} } 注意:本题也可利用递归求解,其阅卷老师自行掌控.江西师范大学计算机科学技术专业 08-09 第 1 学期《数据结构》期末考试试题 B课程代号:262208 注意事项:请将答案全部写到答题纸上,并注明题号! 一,单项选择题(每小题 2 分,共 12 分)1.借助结点的存储地址与其值之间映射关系建立的存储结构是( ) A.顺序结构 B.链式结构 C.索引结构 D.散列结构 2.给定代码 int i=1, n=100; while(i<n) i=i*2; 其渐进时间复杂度是: A. O(1) B. O(n) C.O(logn) D.O(nlogn) 3.图的广度优先遍历与树的_______遍历方式相似. A. 前序遍历 B. 后序遍历 C.层次遍历 D. 没有那种方式与其相似 4.中序遍历和后序遍历序列相同的二叉树,其特点是: A. 所有结点不能有左子树 B. 所有结点不能有右子树 C. 不含有 1 度结点 D. 该二叉树只有根存在 5.下列排序中,属于不稳定的排序方式是: A.基数排序 B.堆排序 C.冒泡排序 D.归并排序 6.有 n 个元素的循环队列,f 和 r 分别表示队首和队尾指针,则下列( )条 件为真时,表示队列中有只有 1 个元素. A.f+1==r B.(f+1)%n==r C.r+1==f D. (r+1)%n==f二,程序填空(每空 3 分,共 18 分)1,下列代码实现稀疏矩阵的转置. typedef struct { int i, j,v; /*i,j,v 分别记录矩阵的行值,列值和元素值*/ }matrix; /*假设 ma[0]记录矩阵的行数,列数和元素个数 */ void tran(matrix ma[], matrix mb[]){ int col,p,k;if(ma[0].v==0) return; mb[0].i=ma[0].j; mb[0].j=ma[0].i; mb[0].v=ma[0].v; k=1; for(col=1; (1) ; col++) for(p=1; p<=ma[0].v; p++) if( (2) ) { mb[k].i=ma[p].j; mb[k].j=ma[p].i; mb[k].v=ma[p].v; k++;} } 2,在二叉排序树 t 中查找元素 x.如 t 为 NULL,表示空树,生成结点存储 元素 x,并将其作为二叉排序树的根;否则,若找到,则无需插入;否则, 生成结点存储元素 x,并将该节点插入到二叉排序树的合适位置. #include <stdio.h> typedef struct tt{ int d; struct tt *L,*R; }btree; btree* find_insert(btree *t, int x){ btree *p,*temp; p=(btree *)malloc(sizeof(btree)); p->d=x; p->L=p->R=NULL; if ( (3) ) {t=p; return t;} if ( (4) ) return t; if (x<t->d && t->L==NULL) {t->L=p; return t;} if ( x<t->d && t->L!=NULL){ temp= (5) ; return t;} if (x>=t->d&& t->R==NULL ){t->R=p; return t;} if (x>=t->d&& t->R!=NULL ){ temp= } (6) ; return t;}三,综合解答 答题(每小题 10 分,共 5 分) 题 501,给定如图 1 所示的二 图 二叉树 t, a. 建立 t 的 的后序穿线树 t'; 树 图 1 二叉树 t b. 将 t 转化 化为对应的树 树或森林. 2,S={12,10,13,23, ,14,15,17,27,22,33}依次按散 散列方式存入 入数组 a[10]中,其中散列函数为 H(key)=k 为 key%10,冲突 突处理的方法 法是线性探测 测再散 列.将下面数 a 存储各 数组 各元素的位置 置示意图填写 写完整. 0 数组 a 1 2 3 4 5 6 7 8 9 9 3,给定图 2 所示的有向 向网络 g,要求 求基于 Krustr ral 算法构造 g 的 的最小生成树 树,画出构造 造过程. 4,给定关键 键字{12,5 ,234,67,5 58,42,798, , 567,125,9 9},给出静态 态链式基数排 排序的过程. 图 2 无向网络 G 2 G 5.从空树起 起,依次插入 入关键字 12,10,13,23,14,15,4 47,27,52,33, 构造一棵二叉 叉排序树. (1)画出该 该二叉排序树 树 (2)画出删 删去该树中元 元素值为 23 的 的结点之后的 的二叉排序树 树. 四,算法设计 计题(每小题 10 分,共 2 分) 题 201,编写函数 findX(), 数 ,实现在根为 t 的二叉树 为 树查找元素 x,若找到,则返 回 x 的双亲,否则,返回 NULL.假 t->d 不 回 假设 不等于 x. 0 分) (1 tt{ typedef struct t char d d; struct tt *L, *R; }btree; btree } *f findX(btre *t, in ee nt /*补 补充完整 */ / x){2,给定循环单链表 h,编写函数 delNodes(),实现删除链表中所有值大于 x 而不大于 y 的结点.假设该循环链表带有头结点 h. (10 分) typedef struct rr{ int d; struct rr *next; }Ring; void delNodes(Ring *h, int x, int y) { /*补充完整 */ } 江西师 师范大学计 计算机科学技术专业 学 业 08- 第 1 学 -09 学期《数据 据结构》期末考试试题 B 》 试 参考 考答案课程代号:2 262208 注意事项:请 请将答案全部 部写到答题纸 纸上,并注明题号! 明一,单项选择 择题(每小题 2 分,共 12 分) 题 21.D 2.C 3.C C4. .B 5.B6.B二,程序填空 空(每空 3 分 分,共 18 分)1,下列代码 码实现稀疏矩 矩阵的转置. (1)col<= =ma[0].j; (2)ma[p] ].j==col 2,在二叉排 排序树 t 中查 查找元素 x.如 t 为 NUL 如 LL,表示空树 树,生成结点 点存储 元素 x,并将 将其作为二叉 叉排序树的根 根;否则,若 若找到,则无 无需插入;否 否则, 生成结点存储 储元素 x,并 并将该节点插 插入到二叉排 排序树的合适 适位置. (3)t==NU ULL (4)t->d= ==x (5)find_ _insert(t t->L, x) (6)find_ _insert(t t->R, x)三,综合解答 答题(每小题 10 分,共 5 分) 题 501,给定如图 1 所示的二 图 二叉树 t, a. 建立 t 的 的后序穿线树 t'; 树 b. 将 t 转化 化为对应的树 树或森林. a. t 的后序穿 a 穿线树 t' 分 (5 分) 图 1 二叉树 tb. t 对应的森林 林(5 分)2,S={12,10,13,23, ,14,15,17,27,22,33}依次按散 散列方式存入 入数组 a[10]中,其中散列函数为 H(key)=k 为 key%10,冲突 突处理的方法 法是线性探测 测再散 列.将下面数 a 存储各 数组 各元素的位置 置示意图填写 写完整. 0 数组 a 10 1 33 2 12 3 13 4 23 5 14 6 15 7 17 8 27 9 9 22 2 3, 给定图 2 所示的有向网络 g, 求基于 Krustr 要求 ral 的最小生成树 树,画出构造 造过程. 算法构造 g 的 图 2 无向网络 G 2 G b‐f 每幅图 2 分 4,给定关键 键字{12,5 , ,234,67,58,42,79 98,567,12 25,9},给出 出静态 链式基数排序 序的过程. (10 ( 分) (0)初始状 状态:12 5 234 67 58 42 7 798 567 1 125 9 (1)第 1 次 次分配后的状 状态:12 42 234 5 125 67 5 567 58 79 98 9 (2)第 2 次 次分配后的状 状态:5 9 12 125 2 234 42 58 67 567 798 8 (3)第 3 次 次分配后的状 状态:5 9 12 42 58 67 125 234 567 798 8 起,依次插入 入关键字 12,10,13,23,14,15,4 47,27,52,33, 5.从空树起 构造一棵二叉 叉排序树. (10 ( 分) (1)画出该 该二叉排序树 树 (2)画出删 删去该树中元 元素值为 23 的 的结点之后的 的二叉排序树 树. 删除 2 后的二叉排 23 排序树(5 分) 二叉 叉排序树(5 分 分)四,算法设计题(每小题 10 分,共 20 分)1,在根为 t 的二叉树查找元素 x,若找到,则返回 x 的双亲,否则,返回 NULL.假设 t->d 不等于 x. (10 分) typedef struct tt{ char d; struct tt *L, *R; }btree; btree *findX(btree *t, int x){ if (t==NULL) return NULL; if(t->L!=NULL && t->L->d==x || t->R!=NULL && t->R->d==x) return t if (findX(t->L, x)==NULL) return findX(t->R, x); return findX(t->L, x); } 2,给定循环单链表 h,删除所有值大于 x 而不大于 y 的结点.假设该循环链 表带有头结点 h. (10 分) typedef struct rr{ int d; struct rr *next; }Ring; void delNodes(Ring *h, int x, int y){ Ring *pre,*p; pre=h; p=pre->next; while (p!=h) if (p->d>x && p->d<=y) { p=p->next; pre->next=p; } else{ pre=p; p=p->next; } } 。

(完整word版)数据结构C语言版期末考试试题(附带复习资料)

(完整word版)数据结构C语言版期末考试试题(附带复习资料)

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

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

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

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

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

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

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

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

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

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

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

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案一、选择题(每题2分,共20分)1. 下列哪种数据结构是线性结构?A. 栈B. 树C. 队列D. 图答案:A2. 在计算机科学中,什么是最基本的数据结构?A. 数组B. 链表C. 栈D. 树答案:C3. 下列哪种操作的时间复杂度是O(1)?A. 在链表中插入元素B. 在数组中查找元素C. 在树中删除节点D. 在图中寻找最短路径答案:B4. 下列哪种数据结构常常用于实现栈和队列?A. 数组B. 链表C. 树D. 图答案:A5. 下列哪种数据结构是有序的?A. 栈B. 队列C. 链表D. 图答案:C二、填空题(每题2分,共20分)1. 在数据结构中,栈是一种后进先出(____)的数据结构。

答案:线性表2. 队列是一种先进先出(____)的数据结构。

答案:线性表3. 链表是一种____数据结构,由一系列节点组成。

答案:非线性4. 二叉树是一种特殊的树,它的每个节点最多有两个____。

答案:子节点5. 哈希表是通过____函数将关键字映射到表中的位置来访问数据。

答案:哈希三、判断题(每题2分,共20分)1. 树是一种线性结构。

()答案:错误2. 链表的插入和删除操作时间复杂度都是O(1)。

()答案:错误3. 图是一种线性结构。

()答案:错误4. 哈希表是一种基于顺序结构的的数据结构。

()答案:错误5. 在数据结构中,时间复杂度O(n)表示算法随着输入规模的增加而线性增长。

()答案:正确四、简答题(每题10分,共30分)1. 请简述栈和队列的特点和应用场景。

答案:栈是一种后进先出(LIFO)的数据结构,应用场景包括函数调用栈、表达式求值等。

队列是一种先进先出(FIFO)的数据结构,应用场景包括任务队列、缓冲区等。

2. 请简述链表的优缺点。

答案:链表的优点包括动态扩容、插入和删除操作时间复杂度为O(1)、可以方便地实现各种复杂数据结构。

缺点包括占用内存空间较大、不如数组支持随机访问。

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

汕头职业技术学院
2008-2009学年第一学期期末试卷(C)
课程名称数据结构学分_____ 拟题人何汉阳审题人___________
系(校区) 计算机系班级_____________ __ 学号_____ 姓名_ _________
一、填空(26分,每空一分)
1.在设计算法和程序时,不仅要考虑数据的____________及其_________,而且要考虑数据在存储器中
的____________。

2.算法设计的基本要求是:_____________、_____________和_____________。

3.估算算法运行时间的基本考虑是:确定问题的_______和确定算法执行基本操作的_______,在难以精
确计算基本执行次数的情况下,只考虑相对于问题规模N的_______。

4.对于长度为n的顺序表的删除算法,它的最坏情况时间复杂性及其量级分别是______和______,平均
时间复杂性及其量级分别为________和________。

5.串的堆型存储结构的特点是:仍以一组地址_______的存储单元存放串的字符序列,但其存储空间是
在算法执行过程中____________得到的。

6.顺序队列存在假满现象,解决这个问题的常用方法是构建_______________。

7.图的常用存储结构有__________和__________,Prim 算法是选用____________来存储图中的所有边。

8.解决散列查找的两个主要问题是:(1)构造一个计算简单且冲突尽量少的、地址分布比较_______的
______________; (2)拟定解决__________的方案。

9.假定一个顺序表的长度为50,并假定查找每个元素的概率都相同,则在查找成功情况下的平均查找长
度_________,在查找不成功情况下的平均查找长度_________。

10.关键字比较的次数与记录的初始排列次序无关的排序方法是_______排序;每次使两个相邻的有序表
合成一个有序表的排列方法叫做________排序。

二、选择题(在正确答案上打“√”,共20分,每小题2分)
1、下面关于线性表的叙述中,错误的是______。

A)线性表采用顺序存储,必须占用一片连续的存储单元
B)线性表采用链接存储,不必占用一片连续的存储单元
C)线性表采用链接存储,可以随机存取表中的任一结点
D)线性表采用顺序存储,无须为表示结点间的逻辑关系而增加额外的存储空间
2、若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用_____存储方式最节省运算时间。

A)单链表 B)仅有头指针的单循环链表
C)双链表 D)仅有尾指针的单循环链表
3、下列排序算法中,______排序在每趟结束后不一定能选出一个元素放到其排好序的最终位置上。

A)选择 B)冒泡 C)归并 D)堆
4、有一散列表,表长度m为100,采用除余法构造散列函数,即H(K)=K MOD P(P≤m),为使散列函数具有较好的性能,P的选择应是______。

A)99 B)97 C)91 D)93
5、在包括n个键值的二叉排序树中查找一个键值,其平均比较次数的量级为________。

A)O(n) B)O(log2n) C)O(nlog2n) D)O(n2)
6、对有14个元素的有序表A[1..14]作二分查找,查找元素A[4]时的被比较元素依次为_____。

A) A[1],A[2],A[3],A[4] B) A[1],A[14],A[7],A[4]
C) A[7],A[3],A[5],A[4] C) A[7],A[5],A[3],A[4]
7、假设一个栈的输入序列为A,B,C,D,E,则下列序列中不可能是栈的输出序列的是_______。

A)B,C,D,A,E B)E,D,A,C,B
C)B,C,A,D,E D)A,E,D,C,B
8、前序遍历序列和中序遍历序列相同的非空二叉树是:
A)任一结点均无右子树的非空二叉树 B)根结点无右子树的非空二叉树
C)任一结点均无左子树的非空二叉树 D)根结点无左子树的非空二叉树
9、图中有关路径的定义是______。

A)由顶点和相邻顶点序偶构成的边所形成的序列 B)由不同顶点所形成的序列
C)由不同边所形成的序列 D)上述定义都不是
10、下列说法不正确的是_________。

A)图的遍历是从给定的源点出发每一个顶点仅被访问一次 B)图的深度遍历不适用于有向图
C)遍历的基本算法有两种:深度遍历和广度遍历 D)图的深度遍历是一个递归过程
三、作图题(14分,每小题7分)
1. 先将下列树转化为二叉树,然后画出其二重链式结构图。

2. 写出下列图的邻接矩阵和邻接链表表示法。

四、已知一棵二叉树的先序遍历序列为:ABCDEFGHI,中序遍历序列为:BCAEDGHFI,试画出这棵二叉树。

(10分)
五、在一个带头结点的单链表中,元素值递增有序,编写程序,在单链表中插入一元素后,表中元素值仍保持递增有序。

(10分)
六、写出顺序表上实现顺序查找的算法,并将监视哨设在高端。

(10分)
七、为了提高冒泡排序算法的效率,可在算法中设置一布尔变量noSwap来检查一次内循环中有无记录交换,若无交换算法即可中止结束,请用C语言编写改进后的冒泡排序算法。

(共10分)
2008-2009学年第一学期期末试卷(C )答案
课程名称 数据结构 拟题人 何汉阳
一、填空(每空一分,26分)
1、逻辑结构,运算,存储结构(物理结构)
2、易读性,健壮性,高效率
3、规模,次数,增长率
4、n-1, O(n), (n-1)/2, O(n)
5、连续,动态分配
6、循环队列
7、邻接矩阵,邻接链表,邻接矩阵 8、均匀,散列函数,冲突 9、51/2,50 10、冒泡,归并
二、选择题(每小题2分,共20分)
1~5、CDCBB 6~10、CBCAB
三、作图题(14分,每小题7分) 1、解:
2、解:
⎥⎥⎥⎥⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎣⎡∞


∞∞∞∞∞∞∞∞∞∞01
010*******
四、解(10分)。

五、解:(10分)
∥L是带头结点的单链表,x是待插入的整数。

typedef struct node
{ int data;
struct node *next;
}LINKLIST;
void LinkListInsertSort(LINKLIST *L, int x)
{LINKLIST *pre,*p,*s;
s = (LINKLIST *)malloc(sizeof(LINKLIST));
s->data = x; s->next=NULL;
pre = L; p = L->next; //设置一前一后指针pre, p
while(p != NULL) //使p指向数据域不小于x的结点if(p->data < x) //使pre指向数据域小于x的结点
{ pre = p; p = p->next; }
else
break;
pre->next = s; //在指针pre和p之间插入s结点s->next = p;
}
六、解(10分)。

/*数据结构按课本描述*/
int seq_search1(KEYTYPE k, SSTABLE st)
{ int i=0; /*假定从0号单元开始存放数据*/ st.r[st.len].key=k; /*监视哨设在高端*/
while(st.r[i].key != k)
i++;
if(i==st.len) reture 0;
else return i+1;
}
七、解(10分)。

void Sort_Bubble1(RecordNode *r, int n)
{int i, j;
int noswap =1;
RecordNode temp;
for (i = n - 1; i >= 1 && noswap; i--)
{ noswap = 0;
for (j = 1; j < i + 1; j++)
if (r[j].key > r[j+1].key)
{ temp = r[j];
r[j] = r[j+1];
r[j+1] = temp;
noswap =1; }
}
}。

相关文档
最新文档