数据结构作业电子版
数据结构作业
6.45 编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
6.46 编写复制一棵二叉树的非递归算法。
6.59 编写算法完成下列操作:无重复地输出以孩子兄弟链表存储的树T中所有的边(这里的边是指树T本身的分支,而不是孩子兄弟链表所形成的二叉树的分支)。输出的形式为(k1, k2), ..., (ki, kj), ..., 其中,ki和kj为树结点中的结点标识。
1.20试编写算法求一元多项式 的值Pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为ai(i=0, 1,…, n)、x0和n,输出为Pn(x0)。
第二章线性表
2.11设顺序表va中的数据元素非递减有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
注:根据同学们的要求,将作业量从六道题减少到三道题,希望同学们能及时完成。
第五章数组和广义表
5.21 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法,另设三元组C存放结果矩阵。
5.26 试编写一个以三元组形式输出用十字链表表示的稀疏矩阵中非零元素及其下标的算法。
5.33 试编写递归算法,输出广义表中所有原子项及其所在的层次。
第十二章 文件
12.10假设某个有3000张床位的旅店需建立一个便于管理的文件,每个记录是一个旅客的身份和投宿情况。其中旅客身份证号(15位十进制数字)可作为主关键字,此外还需建立按姓名、投宿日期、从哪来等次关键字项索引。请为此文件确定一种组织方式(如:主文件如何组织,各次关键字项索引如何建立等
第十章 排序
10.23 试以L.r[k+1]作为监视哨改写直接插入排序算法。其中,L.r[1...k]为待排记录且k<MAXSIZE。
数据结构作业及参考答案(最新版)
数据结构一、选择题1.数据的存储结构是指( )。
A 存储在外存中的数据 B 数据所占的存储空间C 数据在计算机中的顺序存储方式D 数据的逻辑结构在计算机中的表示 2.下列关于栈的描述中错误的是( )。
A 栈是先进后出的线性表B 栈只能顺序存储C 栈具有记忆作用D 对栈的插入与删除操作中,不需要改变栈底指针 3.用链表表示线性表的优点是( )。
A 便于随机存取B 花费的存储空间较顺序存储少C 便于插入和删除操作D 数据元素的物理顺序与逻辑顺序相同 4.在下面关于线性表的叙述中,选出正确的一项( )。
A 线性表的每个元素都有一个直接前驱和直接后继;B 线性表中至少要有一个元素;C 线性表中的元素必须按递增或递减的顺序排列;D 除第一个元素和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。
5.设在栈中,由顶向下已存放元素c b a ,在第4个元素d 入栈前,栈中元素可以出栈,试问d 入栈后,不可能的出栈序列是 ( )。
A d c b a B c b d aC c a d bD c d b a6.在下列关于二叉树的叙述中,选出正确的一项( )。
A 在二叉树中,任何一个结点的度都是2;B 二叉树的度为2;C 在二叉树中至少有一个结点的度是2D 一棵二叉树的度可以小于27.下面的二叉树中,( )不是完全二叉树。
8.有一棵非空的二叉树(第0层为根结点),其第i 层上至多有多少个结点 ( )。
A 2iB 2i-1C 2i+1D i9.线性表的逻辑顺序与存储顺序总是一致的,这种说法 ( )。
A 正确B 不正确10.深度为k 的二叉树,所含叶子的个数最多为 ( )。
A 2KB KC 2k-1D 2k-111.深度为5的二叉树至多有( )个结点。
A 16B 32C 31D 1012.在下面关于线性表的叙述中,选出错误的一项( )。
A 采用顺序存储的线性表,必须占用一片连续的存储单元B 采用顺序存储的线性表,便于进行插入和删除操作C 采用链接存储的线性表,不必占用一片连续的存储单元D 采用链接存储的线性表,便于进行插入和删除操作13.已知一棵二叉树的前序遍历结果为ABCDEF ,中序遍历结果为CBAEDF ,则后序遍历的结果为( )。
数据结构作业电子版
1数据结构课程研究的主要内容包括()()()2一个完整的算法应该具有_____ _____ ______ ______ ______五个特性3数据的逻辑结构可分为_____ ______两大类4数据的逻辑结构是指而存储结构是指5逻辑上相邻的数据元素在物理位置上也相邻是存储结构的特点之一6为了实现随机访问线性结构应该采用存储结构7链式存储结构的主要特点是8算法分析主要从和这两个方面对算法进行分析(1)数据(2)数据元素(3)数据类型(4)数据结构(5)逻辑结构(6)存储结构(7)线性结构(8)非线性结构第二章作业一、判断题(在你认为正确的题后的括号中打√,否则打X)。
1.线性表的逻辑顺序与存储顺序总是一致的。
2.顺序存储的线性表可以按序号随机存取。
3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
7.线性表的链式存储结构优于顺序存储结构。
8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
二、单项选择题。
1.线性表是( ) 。
(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空;(C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。
2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的()个元素。
(A) n/2 (B) n+1/2 (C) n -1/2 (D) n 3.线性表采用链式存储时,其地址( ) 。
200721数据结构 作业(高起专、高起本)
比较(
)个元素结点。
A、
B、n
C、
D、
20、设单链表中指针 p 指向结点 m,若要删除 m 之后的结点(若存在),则需修改指针的操作
为(
)。
A、
B、
C、
D、
21、在(
)运算中,使用顺序表比链表好。
A、插入
B、删除
C、根据序号查找
D、根据元素值查找
22、在一个具有 n 个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度
第 2 页 共 20 页 在您完成作业过程中,如有疑难,请登录学院网站“辅导答疑”栏目,与老师进行交流讨论!
C、一个无限序列,可以为空
D、一个无限序列,不可以为空
18、在一个长度为 n 的顺序表中删除第 i 个元素
时,需向前移动(
)个元素。
A、
B、
C、
D、i
19、从一个具有 n 个结点的单链表中查找其值等于 x 的结点时,在查找成功的情况下,需平均
( )个。
第 6 页 共 20 页 在您完成作业过程中,如有疑难,请登录学院网站“辅导答疑”栏目,与老师进行交流讨论!
A、15
B、16
C、17
D、47
48、设 n , m 为一棵二叉树上的两个结点,在中序遍历序列中 n 在 m 前的条件是( )。
A、n 在 m 右方
B、n 在 m 左方
C、n 是 m 的祖先
D、求串长
6、二维数组 M 的成员是 6 个字符(每个字符占一个存储单元)组成的串,行下标 i 的
范围从 0 到 8,列下标 j 的范围从 1 到 10,则存放 M 至少需要(
)个字节。
A、90
B、180
电子科大16秋《数据结构》在线作业3
电子科技大学电子科大16秋《数据结构》在线作业3一、单选题(共16 道试题,共48 分。
)1. 抽象数据类型的三个组成部分分别为()。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型正确答案:2. 已知一棵完全二叉树有64个叶子结点,则该树可能达到的最大深度为()。
A. 7B. 8C. 9D. 10正确答案:3. 已知在一棵度为3的树中,度为2的结点数为4,度为3的结点数为3,则该树中的叶子结点数为()。
A. 5B. 8C. 11D. 18正确答案:4. 已知指针p和q分别指向某单链表中第一个结点和最后一个结点。
假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为()。
A. q->next=s->next;s->next=pB. s->next=p;q->next=s->nextC. p->next=s->next;s->next=qD. s->next=q;p->next=s->next正确答案:5. 下面程序段的时间复杂度为()。
for (i=0; i<m; i++) for (j=0; j<n; j++) A[i][j]=i*j;A. O (m2)B. O (n2)C. O (m*n)D. O (m+n)正确答案:6. 在数据结构中,数据的逻辑结构可以分成()。
A. 内部结构和外部结构B. 线性结构和非线性结构C. 紧凑结构和非紧揍结构D. 动态结构和静态结构正确答案:7. 在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是()。
A. p=p->nextB. p->next=p->next->nextC. p->next=pD. p=p->next->next;正确答案:8. 采用两类不同存储结构的字符串可分别简称为()。
数据结构实践作业
数据结构作业利用单向链表数据结构完成对链表的如下操作:1、创建一条含整数结点的无序链表2、链表结点的输出3、链表结点的升序排序4、分别计算链表中奇数和偶数结点之和并输出5、释放链表具体要求将程序功能做成菜单,形式如下:1、创建一条含整数结点的无序链表2、链表结点的输出3、链表结点的升序排序4、分别计算链表中奇数和偶数结点之和并输出5、释放链表0、退出《数据结构》大作业1 总体要求将程序功能做成菜单,形式如下:(1)创建一条含整数结点的无序链表(2)链表结点的输出(3)链表结点的升序排序(4)分别计算链表中奇数和偶数结点之和并输出(5)释放链表2 开发环境软件环境:Window10,Visual Studio 20173 系统运行效果截图(1)主菜单:(2)创建一条含整数结点的无序链表:3,6,2,5,9(3)链表结点的输出(4)链表结点的升序排序(5)分别计算链表中奇数和偶数结点之和并输出(6)释放链表4 源程序#include<iostream>//头文件using namespace std;//节点数据结构定义struct node{int data;node *next;};//创建一条含整数结点的无序链表node *CreateLinkList(){node *p1, *p2, *head;int n;p2 = NULL;head = NULL;cout <<"正在创建一个无序链表\n";cout <<"请输入一个整数,以-1结束:";cin >> n;//循环输入一个整数,直到数值为-1结束,创建一条无序链表while (n != -1){p1 = new node;p1->data = n;//采用尾插法,新建一个结点并连接到链表尾部if (head == 0){head = p1; p2 = p1; //首结点的建立}else{p2->next = p1; p2 = p1;}cout <<"请输入一个整数,以-1结束:";cin >> n;}if (head != 0) //尾结点p2->next = 0;return(head);}//输出结点void PrintLinkList(const node *head){const node *p;p = head;while (p != NULL){cout <<" "<< (p->data);p = p->next;}cout << endl;}//升序排序void SortLinkList(node *head){node temp;node *p = NULL;node *q = NULL;//判断结点为空或者只有一个结点if (head == NULL || head->next == NULL){return;}//p->next!=NULL为链表倒数第2个结点for (p = head; p->next != NULL; p = p->next) {for (q = p->next; q != NULL; q = q->next){if (p->data > q->data) //升序{ //交换数据域temp.data = q->data;q->data = p->data;p->data = temp.data;}}}return;}//奇数结点和int OddSumLinkList(const node *head){int sum = 0;const node *p;p = head;while (p){//判断数值为是否奇数if (p->data % 2 != 0){sum = sum + p->data;}p = p->next;}return sum;}//偶数结点和int EvenSumLinkList(const node *head){int sum = 0;const node *p;p = head;while (p){//判断是否偶数if (p->data % 2 == 0){sum = sum + p->data; //偶数结点的数值累加}p = p->next;}return sum;}//释放链表void DeleteLinkList(node *head){node *p;while (head){p = head;head = head->next;delete p;}printf("释放成功\n");}void main(){node *head;head = NULL;int select;cout <<"************菜单************"<< endl;cout <<"输入对应选择,执行对应操作"<< endl;cout <<"1.创建一条含整数结点的无序链表"<< endl;cout <<"2.链表结点的输出"<< endl;cout <<"3.链表节点的升序排序"<< endl;cout <<"4.分别计算链表中奇数和偶数结点之和并输出"<< endl;cout <<"5.释放链表"<< endl;cout <<"0.退出"<< endl;while (1){cout <<"\n请输入选择:";cin >> select;switch (select) //判断选项,并执行对应的函数{case 1:{head = CreateLinkList();printf("无序链表创建完成\n");break;}case 2:{printf("输出链表中各结点数据:");PrintLinkList(head);break;}case 3:{SortLinkList(head);printf("升序后:");PrintLinkList(head);break;}case 4:{int oddsum;int evensum;oddsum = OddSumLinkList(head);evensum = EvenSumLinkList(head);printf("奇数和= %d,偶数和= %d\n", oddsum, evensum);break;}case 5:{DeleteLinkList(head);break;}case 0:{cout <<"退出"<< endl;exit(0);}default:{cout <<"输入选项有误,请重新输入:"<< endl;break;}}}}。
数据结构的作业
第五章作业: 第五章作业: 1.假设有二维数组 假设有二维数组a:array[1..6,0..7] of elemtp; 每个数据元 假设有二维数组 素占6个字节 存储器按字节编址 的基地址为1000,则: 素占 个字节,存储器按字节编址。a的基地址为 个字节 存储器按字节编址。 的基地址为 则 (1) 数组 的体积; 数组a的体积 的体积; (2)数组 的最后一个元素的第一个字节的地址; 数组a的最后一个元素的第一个字节的地址 数组 的最后一个元素的第一个字节的地址; (3)按行存储时,a[2,4]的第一个字节的地址; 按行存储时, 的第一个字节的地址; 按行存储时 的第一个字节的地址 (4)按列存储时,a[5,7]的第一个字节的地址; 按列存储时, 的第一个字节的地址; 按列存储时 的第一个字节的地址
7.写出下列各树的先根序列 后根序列 并且画出对应的二 写出下列各树的先根序列,后根序列 写出下列各树的先根序列 后根序列,并且画出对应的二 叉树. 叉树 A A A A B C D B C B C I 8.画出第 题的森林相应的二叉树 画出第7题的森林相应的二叉树 画出第 题的森林相应的二叉树. 9.画出和下列已知序列对应的树 画出和下列已知序列对应的树T: 画出和下列已知序列对应的树 树的先根次序访问序列为:GFKDAIEBCHJ,而且 而且 树的先根次序访问序列为 树的后根次序访问序列为:DIAEKFCJHBG。 。 树的后根次序访问序列为 E F J G H K
3.用单链表实现 用单链表实现Locate(L,x)函数。(可参考 函数。(可参考P26算法 算法2.5) 用单链表实现 函数。(可参考 算法 4.上机题:设单链表Va中的数据元素递增有序。试编 上机题:设单链表 中的数据元素递增有序 中的数据元素递增有序。 上机题 写程序,将数据X插入单链表 插入单链表Va, 写程序,将数据 插入单链表 ,要求插 入后保持该表的有序性。 入后保持该表的有序性。 5.写出双向链表删除第i个结点的算法 5.写出双向链表删除第i个结点的算法。 写出双向链表删除第 个结点的算法。 6.写出求双向循环链表长度的算法。(注:头结点 写出求双向循环链表长度的算法。(注 写出求双向循环链表长度的算法。( 不算) 不算)
数据结构-作业-491
第五章习题:
1. 设有二维数组a[6][8],每个元素占相邻的4个 字节,存储器按字节编址,已知a的起始地址是1000, 试计算:
① 数组a的体积(即存储量); ② 数组a的最后一个元素a57起始地址; ③ 按行序优先时,元素a46起始地址。 2.什么是广义表?请简述广义表与线性表的区别? 3. 一个广义表是(a, (b, c), d, e, (f, (i, j), k)) ,请画出 该广义表的图形表示和链式存储结构。
① 哪个是根结点? 哪些是叶子结点? 哪个是g 的双亲? 哪些是g的祖先? 哪些是g的孩子? 那些 是e的子孙? 哪些是e的兄弟? 哪些是f的兄弟?
② b和n的层次各是多少? 树的深度是多少? 以结点c为根的子树的深度是多少?
(2) 设有下图所示的二叉树。 ① 分别用顺序存储方法和链接存储方法画出该二叉树的存储 结构。 ② 写出该二叉树的先序、中序、后序遍历序列。
第四章习题:
1.解释空串和空格串的区别,主串和子串的区别。
2.设s=‘I AM A STUDENT’, t=‘GOOD’, q=‘WORKER’。 求:①StrLength(s),②StrLength(t), ③SubString(s,8,7),④ SubString(t,2,1), ⑤Index(s,‘A’), ⑥Index(s,t), ⑦Replace(s,‘STUDENT’,q), ⑧Concat(SubString(s,6,2),Concat(t, SubString(s,7,8)))。
5 .已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不 是尾元结点,试从下列提供的答案中选择合适的语句序列。
数据结构实验作业(打印版-每人一份)-new
数据结构实验作业1:设计程序,输出所有小于等于n(n为一个大于2的正整数)的素数,要求:每行输出10个素数;尽可能采用较优算法。
2:建立顺序表存储数据序列(10,20,30,40,50,60,70,80,90,100),要求:(1)输出顺序表中的所有元素;(2)键盘输入一个数x,如x在表中返回其在表中的位序,不在返回相应提示信息。
(3)删除顺序表中的第8个元素,并输出顺序表中的所有元素;(4)在第5个元素后面插入新元素55,并输出顺序表中的所有元素。
3:建立单链表存储数据(10,20,30,40,50,60,70,80,90,100),要求:(1)头插法或尾插法建立单链表;(2)输出单链表的长度;(3)键盘输入一个值x,输出链表中第一个值为x的元素的位序;(4)键盘输入一个位序值b,在第b个元素之前插入值为500的元素,输出链表的长度及链表所有数据;(5)键盘输入位序值m,删除位序为m的元素,输出链表的长度及链表中所有数据。
4:建立目标串(主串)如:s=“aaaabcdcccc”,模式串(子串)如:t=“abcd”,编写程序,实现顺序串的BF模式匹配算法。
要求:匹配成功,输出位序,匹配不成功,显示相应提示信息。
5:用三元组存储矩阵并实现矩阵转置,要求:输出转置前后矩阵的三元组顺序表。
1 0 0 0 8 1 0 30 0 0 0 4 --- 0 0 03 0 0 0 0 0 0 00 0 08 4 0实验报告书写要求本学期实验报告,每次实验课结束后书写相应实验报告,书写请用实验报告纸,多页请装订或粘贴,写清楚自己的专业班级、学号姓名,于规定时间上交。
(课代表每次将作业按学号排序,并附未交作业同学名单)实验报告主要内容包括下面几个方面:(参考)1、实验题目2、设计思路3、程序调试过程中遇到的问题及解决办法4、附源程序5、实验收获与体会2015-2-20。
数据结构作业题及参考答案
东北农业大学网络教育学院数据结构作业题(一)一、选择题(每题2分,共20分)1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。
A、O(n)B、O (n/2)C、O (1)D、O (n2)2.带头结点的单链表first为空的判定条件是()。
A、first == NULL;B、first->link == NULL;C、first->link == first;D、first != NULL;3.在一棵树中,()没有前驱结点。
A、分支结点B、叶结点C、树根结点D、空结点4.在有向图中每个顶点的度等于该顶点的()。
A、入度B、出度C、入度与出度之和D、入度与出度之差5.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。
A、20B、18C、25D、226.下列程序段的时间复杂度为()。
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)7.栈是一种操作受限的线性结构,其操作的主要特征是()。
A、先进先出B、后进先出C、进优于出D、出优于进8.假设以数组A[n]存放循环队列的元素,其头、尾指针分别为front和rear。
若设定尾指针指向队列中的队尾元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为()。
A、(rear-front-1)%nB、(rear-front)%nC、(front-rear+1)%nD、(rear-front+n)%n9.高度为5的完全二叉树中含有的结点数至少为()。
A、16B、17C、31D、3210.如图所示有向图的一个拓扑序列是( )A、ABCDEFB、FCBEADC、FEDCBAD、DAEBCF二、填空题(每空1分,共20分)1.n (n﹥0) 个顶点的无向图最多有条边,最少有条边。
数据结构作业题
数据结构作业题(总15页) -本页仅作为预览文档封面,使用时请删除本页-第一章1、设n为正整数,利用大"O"记号,将下列程序段的执行时间表示为n的函数。
(1) i=1; k=0;while(i<n){ k=k+10*i;i++;}(2) i=0; k=0;do{k=k+10*i; i++;}while(i<n);(3) i=1; j=0;while(i+j<=n){if (i>j) j++;else i++;}(4)x=n; 编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。
当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。
两个栈均从两端向中间增长。
当向第0号栈插入一个新元素时,使top[0]增1得到新的栈顶位置,当向第1号栈插入一个新元素时,使top[1]减1得到新的栈顶位置。
当top[0]+1 == top[1]时或top[0] == top[1]-1时,栈空间满,此时不能再向任一栈加入新的元素。
试定义这种双栈(Double Stack)结构的类型定义,并实现初始化、判栈空、判栈满、插入、删除算法。
0 m-1【提示】类型定义:#define m 100;Typedef int dsType;试利用算符优先法,画出对如下中缀算术表达式求值时运算符栈和操作数栈的变化。
a +b * (c - d) – e# (#表示结束符)第四章设有模式串T1,T2,T1=‘aaab’,T2=‘abcabaa’,目标串s为‘abc aaabbabcabaacbacba’,(1)计算模式串T1的next(j) 和nextval(j)函数的值,并(按照nextval(j) )画出KMP算法匹配过程。
(2)计算模式串T2的next(j) 和nextval(j)函数的值,并(按照nextval(j) )画出KMP算法匹配过程。
数据结构作业全
Dr. yimin zhou released for Sophomore. 34th. 33rd. Oct, Sep, 2014. 2013.
【解答】
线性表
第 8 页
周益民教学班专用
栈 队列 数组
1. 选择题
(1) 设有一个空栈,栈顶指针为 1000H(十六进制),每个元素需要 2 个单位的存储空间, 则执行 PUSH,PUSH,POP,PUSH,POP,PUSH,POP,PUSH 操作后,栈顶指针值 为( )。 B.1003H C.1004H D.1005H A.1002H )。 (2) 一个栈的入栈序列是{1,2,3,4,5},则栈不可能的输出序列是( B.{4,5,3,2,1} C.{4,3,5,1,2} D.{1,2,3,4,5} A.{5,4,3,2,1} (3) 向一个栈顶指针为 h 的带头结点链栈中插入指针 s 所指向节点时,应该执行( B.s->next = h; A.h->next = s; D.s->next = h->next; h->next = s; C.s->next = h; h->next = s; )。
线性表
第 6 页
周益民教学班专用
(7) 在某商店的仓库中,对电视机按照其价格从低到高建立一个单链表,链表的每个节 点指出同样价格的电视机的台数。现有 m 台价格为 n 元的电视机入库。请编写算法完成 仓库的进货管理。 【分析】根据题意,定义存储结构如下
struct Node { float price; int num; struct Node *next; }
(4) 如果某线性表中数据元素的类型不一致,但希望能够根据下标随机存取每个元素, 请为这个线性表设计一个合适的存储结构。 【解答】
数据结构第2章作业
第2章线性表一选择题1.下述哪一条是顺序存储结构的优点?()A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个()的有限序列(n>0)。
A.表元素B.字符C.数据元素D.数据项E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。
A.单链表B.单循环链表C.带尾指针的单循环链表D.带头结点的双循环链表7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用()存储方式最节省运算时间。
A.单链表B.双链表C.单循环链表D.带头结点的双循环链表8.静态链表中指针表示的是().A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址9.链表不具有的特点是()A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比10.下面的叙述不正确的是()A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B.线性表在链式存储时,查找第i个元素的时间同i的值无关C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比D.线性表在顺序存储时,查找第i个元素的时间同i的值无关11.12.(1)静态链表既有顺序存储的优点,又有动态链表的优点。
数据结构作业
作业 5
5. 将下列一般树转为二叉树
B D E A C F K G L I J
6. 三个结点A、B、C 可以构造多少种不同的树? 7. 深度为4的只有4个结点的单支二叉树共有几 种?画出只有左 子树的深度为4的单支二叉树的顺序存储结构。 8. 已知二叉树的先序序列为abdgcefh,中序序列为:dgbaechf, 画出二叉树并求后序序列。 9. 满足下列条件的二叉树是什么样的二叉树? 1) 先序序列和中序序列相同; 2) 中序序列和后序序列相同。 10. 已知信源符号a、b、c、d、e的出现频率分别为10、5、20、 10、18,求1)huffman编码;2)画出huffman码树;3)求平均 码长;4)求最大压缩比
1. Q[0:10]为循环队列,初态front=rear=1,画出 下列操作后,队的头、尾指示器状态: (1) d,e,b,g,h入队; (2) d, e出队; (3) i,j,k,l,m入队; (4) b出队; (5) n,o,p,q,r入队 2. 试画出表达式:A*(B-C)+D**(E/F)执行过程中NS, OS栈的变化情况,并给出相应的后缀表达式结果
初始建堆结果 13 第一趟的结果 76 第二趟的结果 76 第三趟的结果 65
第四趟的结果 97 第五趟的结果 76 第六趟的结果 97 第七趟的结果 97
练习
Lchild Rchild Data i Λ Λ j 1 Λ Λ h 2 3 f 2 3 4 7 5 6 5 8 c 7 Λ Λ e 8 10 Λ g 9 10 1 i
V1 a2=1 a3=50
a1=6
a6=11
a11=24 a8=1 a9=12 V4 V7 (a)
V3 a7=12
a10=38
数据结构(电子版)
数据结构(电子版)一.选择题1.队列是一种特殊的线性表,其特殊在于(C)A.插入和删除在表的不同位置执行B.插入和删除在表的两端位置执行C.插入和删除分别在表的两端执行D.插入和删除都在表的某一端执行2.线性表L在下列(B)情况下适用于使用链表结构实现。
A.不需修改L的结构B.需不断对L进行插入,删除C.需经常修改L中的结点值D.L中含大量结点3.链表不具有的特点是(B)A.插入,删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比4.线性表的长度是指(D)A.顺序存储结构中数组所占的空间大小B.链表中所有结点占用的空间大小C.所能存储的最大的数据元素的个数D.线性表中元素的个数5.链栈与顺序栈相比,比较明显的优点是(B)A.插入操作更加方便B.通常不会出现栈满的情况C.不会出现栈空的情况D.删除操作更加方便6.设rear是指向非空带头结点循环链表的尾指针,则在尾部插入s 所指结点的操作为(C)A.s=rear;rear=rear->nextB.s->next=rear->next;rear->next=s->nextC.s->next=rear->next;rear->next=s;rear=sD.rear->next=s;s->next=rear7.某二叉树的先序和后序正好相反,则该二叉树一定是(B)的二叉树A.为空或者只有一个结点B.高度等于其结点个数C.任一结点无左孩子D.任一结点无右孩子8.对于任何一棵二叉树T,如果其叶子结点为n0,度为2的结点数为n2,则(A)A.n0=n2+1B.n2=n0+1C.n0=2n2+1D.n2=2n0+19.在二叉树排序中,关键字值最小的结点(A)。
A.左孩子链一定为空B.右孩子链一定为空C.左右孩子链均为空D.左右孩子链均不为空10.一个无向网的最小生成树(C)A.只有一棵B.肯定有多棵C.一棵或多棵D.可能一棵也没有11.一组记录排序码为(72,75,71,21,92,5,64),则利用快速排序方法,以第一个记录为基准得到第一趟排序结果为(D)A.(71,21,5,64,72,75,92)B.(64,5,21,71,72,92,75)C.(5,21,64,71,72,75,92)D.(64,5,71,21,72,92,75)12.要连通具有n个顶向的有向图,至少需要(B)条有向边A.n-1B.nC.n+1D.2n13.一个有n个顶点的无向图至多有(A)条边A.n(n-1)/2B.n(n+1)/2C.nD.任意14.在顺序存储的线性表中,第一个元素的存储地址为100,每个元素的长度为5,则第15个元素的存储地址为(C)A.115B.145C.170D.19515.任何一棵二叉树的叶结点在先序,中序和后序遍历序列中的相对次序(B)A.发生改变B.不发生改变C.不能确定D.以上都不对16.一个有序表的关键字序列为{2,5,9,12,32,41,45,62,75,77,82,95,100},当采用折半查找值为82的结点时,比较(C)次后查找成功A. 1B. 2C. 4D.817.二维数组A[10][20]采用行序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][12]的地址是(C)A.315B.326C.332D.33818.一组记录的待排序码为(24,84,21,47,15,27,68,35,20),利用快速排序方法,以第一个记录为基准得到的第一趟排序结果为(C)A.15,21,20,24,84,35,68,47,27B.15,20,21,24,27,35,47,68,84C.20,15,21,24,47,27,68,35,84D.20,15,21,24,47,68,27,84,3519.一个有序表为{10,25,33,47,52,63,75,80,96},则折半查找52需要比较(A)次A. 1B. 2C. 3D. 420.设栈初始为空,输入序列为:a,b,c,d,e。
数据结构作业及答案汇总
第一章绪论一、选择题1以及它们之间的22.数据构造被形式地定义为(K, R),其中K是1的有限集,R是K上的2有限集。
3.在数据构造中,从逻辑上可以把数据构造分成。
A.动态构造和静态构造B.紧凑构造和非紧凑构造1的存储构造,线性表的链式存储构造是一种21,算法分析的两个主要方面其一是指21,它必须具备输入、输出和2等5个特性。
2 A.可执行性、可移植性和可扩大性 B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和平安性7.线性表的逻辑顺序及存储顺序总是一致的,这种说法8线性表假设采用链式存储构造时,要求内存中可用存储单元的地址。
A.必须连续的B.局部地址必须连续的C.一定是不续的D连续不连续都可以9.以下的表达中,正确的选项是 C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据构造都具备三个根本运算:插入、删除和查找,这种说法、和,树形构造和图形构造合称为。
2.在线性构造中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有、、、、。
for( i = 0; i < n; i++)for( j = 0; j < m; j++)A[i][j] = 0;。
i = s = 0;while ( s < n){i ++; /* i = i +1*/s += i; /* s = s + i*/ }。
s = 0;for( i = 0; i < n; i++)for( j = 0; j < n; j++)s += B[i][j]; sum = s;。
i = 1;while ( i <= n )i = i * 3;第一章绪论〔参考答案〕一、选择题:1. A. B。
2. B. D。
3.C。
4. A.B。
〔顺序存储构造的地址在内存中是连续的所以可以通过计算地址的相对变化而实现随机存取,而链式存储构造的存储地址不一定连续,只能通过结点的指针按次序顺序存取〕 5. C.A。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1数据结构课程研究的主要内容包括()()()2一个完整的算法应该具有_____ _____ ______ ______ ______五个特性3数据的逻辑结构可分为_____ ______两大类4数据的逻辑结构是指而存储结构是指5逻辑上相邻的数据元素在物理位置上也相邻是存储结构的特点之一6为了实现随机访问线性结构应该采用存储结构7链式存储结构的主要特点是8算法分析主要从和这两个方面对算法进行分析(1)数据(2)数据元素(3)数据类型(4)数据结构(5)逻辑结构(6)存储结构(7)线性结构(8)非线性结构第二章作业一、判断题(在你认为正确的题后的括号中打√,否则打X)。
1.线性表的逻辑顺序与存储顺序总是一致的。
2.顺序存储的线性表可以按序号随机存取。
3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
7.线性表的链式存储结构优于顺序存储结构。
8.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
二、单项选择题。
1.线性表是( ) 。
(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空;(C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。
2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的()个元素。
(A) n/2 (B) n+1/2 (C) n -1/2 (D) n 3.线性表采用链式存储时,其地址( ) 。
(A) 必须是连续的; (B) 部分地址必须是连续的;(C) 一定是不连续的; (D) 连续与否均可以。
4.用链表表示线性表的优点是()。
(A)便于随机存取(B)花费的存储空间较顺序存储少(C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同5.下面关于线性表的叙述错误的是( )。
() 线性表采用顺序存储,必须占用一片地址连续的单元;() 线性表采用顺序存储,便于进行插入和删除操作;() 线性表采用链式存储,不必占用一片地址连续的单元;() 线性表采用链式存储,便于进行插入和删除操作;6.设存储分配是从低地址到高地址进行的。
若每个元素占用4个存储单元,则某元素的地址是指它所占用的单元的( )。
A.第1个单元的地址 B.第2个单元的地址C.第3个单元的地址 n第4个单元的地址7.若线性表采用顺序存储结构,每个元素占用4个存储单元,第1个元素的存储地址为100,则第12个元素的存储地址是( )。
A.112 B.144 C.148 0.4128.若长度为n的线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,i的合法值应该是( )。
A.i>O B.i≤n C.1≤i≤n D.1≤i≤n+19.若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,i的合法值应该是( )。
A.i>O B.i≤n C.1≤i≤n D。
1≤i≤n十110.若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,首先需要移动表中( )个数据元素。
A.n-i B.n+i C.n-i+l D.n-i-111.若长度为n的线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,需要移动表中( )个元素。
A.i B.n+i C.n-i+l D.n-i-112.设单链表中结点的结构为typedef struct node { //链表结点定义ElemType data; //数据struct node * Link; //结点后继指针} ListNode;已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作()A. s->link = p; p->link = s;B. s->link = p->link; p->link = s;C. s->link = p->link; p = s;D. p->link = s; s->link = p;第三章作业1.栈和队列都是()A.限制存取位置的线性结构B.顺序存储的线性结构C.链式存储的线性结构D.限制存取位置的非线性结构2.若数组s[0..n-1]为两个栈s1和s2的共用存储空间,且仅当s[0..n-1]全满时,各栈才不能进行进栈操作,则为这两个栈分配空间的最佳方案是:s1和s2的栈顶指针的初值分别为()A.:0和n-1B.1和n/2 C.-1和nD.-1和n+13.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为( )A.4B.5C.6D.74.如图所示,设输入元素的顺序是A,B,C,D,通过栈的变换,在输出端可得到各种排列。
若输出序列的第一个元素为D,则输出序列为_ ____________。
5.队列中允许进行删除的一端为___ ______。
6.假设以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXX之后,得到的输出序列为___ __。
第五章数组和广义表单项选择题。
(1)空的广义表是指广义表()。
A.深度为0 B.尚未赋值C.不含任何原子元素D.不含任何元素(2)广义表中元素分为()。
A.原子元素B.表元素C.原子元素和表元素D.任意元素(3)广义表的长度是指()。
A.广义表中元素的个数B.广义表中原子元素的个数C.广义表中表元素的个数D.广义表中括号嵌套的层数(4)广义表的深度是指()。
A.广义表中元素的个数B.广义表中原子元素的个数C.广义表中表元素的个数D.广义表中括号嵌套的层数(5)在一个长度为n,包含m个原子元素的广义表中,()。
A.m和n相等B.m不大于n C.m不小于n D.m与n无关(6)广义表A=(( ),(a),(b,(c,d)))的长度为()。
A.2 B.3 C.4 D.5(7)广义表A:(( ),(a),(b,(c,d)))的深度为()。
A.2 B.3 C.4 D.5(8)设有一5阶上三角矩阵A[1..5,1..5],现将其上三角中的元素按列优先顺序存放在一堆数组B[1..15]中。
已知B[1]的地址为100,每个元素占用2个存储单元,则A[3,4]的地址为()A.116 B.118 C.120 D.122第六章树和二叉树一、判断题(在你认为正确的题后的括号中打√,否则打X)。
(1)在树型结构中,每一个结点最多只有一个前驱结点,但可以有多个后继结点。
( )(2)在树型结构中,每—个结点不能没有前驱结点。
( )(3)在度为k的树中,至少有一个度为k的结点。
( )(4)度为2的树是二叉树。
( )(5)在非空完全二叉树中,只有最下面一层的结点为叶结点。
( )(6)在完全二叉树中,没有左孩子的结点一定是叶结点。
( )(7)在完全二叉树中,没有右孩子的结点一定是叶结点。
( )(8)在结点数目一定的前提下,各种形态的二叉树中,完全二叉树具有最小深度。
(9)满二叉树中的每个结点的度不是0就是2。
( )(10)在所有深度相同的二叉树中,满二叉树具有最大结点数目。
( )(11)由二叉树的前序序列和中序序列可以唯一地确定一棵二叉树。
( )(12)由二叉树的中序序列和后序序列可以唯一地确定一棵二叉树。
( )(13)由二叉树的前序序列和后序序列可以唯一地确定一棵二叉树。
( )(14)哈夫曼树中不存在度为1的结点。
( )(15)满二叉树一定是完全二叉树。
( )二、单项选择题。
(1)树型结构最适合用来描述( )。
A.有序的数据元素B.无序的数据元素C.数据元素之间具有层次关系的数据D.数据元素之间没有关系的数据(2)按照二叉树的定义,具有3个结点的二叉树有( )种形态(不考虑数据信息的组合情况)。
A.2 B.3 C.4 D.5(3)若一棵二叉树有10个度为2的结点,则该二叉树的叶结点的个数是( )。
A.9 B.11 C.12 D.不确定(4)若一棵满二叉树有2047个结点,则该二叉树中叶结点的个数为( )。
A.512 B.1024 C.2048 D.4096(5)深度为h的满二叉树的第i层有( )个结点。
(i≤h) ( )A.2i—1 B.2i-1C.2h—1 D.2h-1(6)深度为h的满二叉树共有( )个结点。
(i<h)A.22h-1B.22h-1 C.2h-1 D.2h-1(7)若某完全二叉树的深度为h,则该完全二叉树中至少有( )个结点。
A.2h B.2h-1 c.2h+1 D.2h—1三、填空题。
(1)任何非空树中有且仅有一个结点没有前驱结点,该结点就是树的______ ______。
(2)树的层次定义为____________________。
(3)度为k的树中第i层最多有______________个结点(i≥1)。
(4)深度为h的k叉树最多有_______ _____________个结点。
(5)非空二叉树一共有_______________种基本形态。
(6)非空二叉树中第i层最多有______________个结点。
(7)深度为h的二叉树最多有_____________________________个结点。
(8)具有n个结点的完全二叉树的深度h=____________________。
(9)若二叉树有N0个叶结点,n2个度为2的结点,则N0与n2的关系是________ ______。
(10)若具有n个结点的非空二叉树.树有N0个叶结点,则该二叉树有_______ _____个度为2的结点,___________个度为1的结点。
(11)对具有n个结点的完全二叉树按照层次从上到下,每一层从左到右的次序对所有结点进行编号,编号为i的结点的双亲结点的编号为______________,左孩子的编号为_______________,右孩子的编号为______________。
(12)若具有n个结点的二叉树采用二叉链表存储结构,则该链表中有_____________个指针域,其中有________________个指针域用于链接孩子结点,______________个指针域空闲存放着NULL。
(13)已知二叉树的前序遍历序列为ABDCEFG,中序遍历序列为DBCAFEG,其后序遍历序列为__________。