数据结构(本)形考作业1参考答案:一、单项选择题1.C 2.D 3.C 4.C 5.D 6.C 7.C 8.C 9.A 10.B二、填空题1.n-i+1 2.n-i 3.集合、线性表、树、图 4. 存储结构、物理结构 5.线性表图6. 有穷性、确定性、可行性、有输入、有输出7. 图8.树9. 线性表 10. n-1 O(n)11.s->next=p->next; 12.head 13.q->next=p->next; 14.p->next=head; 15.单链表 16.顺序存储链式存储 17.存储结构 18.两个后继结点前驱结点尾结点头结点19.指向头结点的指针指向第一个结点的指针 20.链式链表三、问答题1.简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现?答:若用结点表示某个数据元素,则结点与结点之间的逻辑关系就称为数据的逻辑结构。
数据在计算机中的存储表示称为数据的存储结构。
可见,数据的逻辑结构是反映数据之间的固有关系,而数据的存储结构是数据在计算机中的存储表示。
尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相同,但可通过结点的内部信息,找到其相邻的结点,从而保留了逻辑结构的特点。
采用的存储结构不同,对数据的操作在灵活性,算法复杂度等方面差别较大。
2.解释顺序存储结构和链式存储结构的特点,并比较顺序存储结构和链式存储结构的优缺点。
答:顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的,,要求内存中存储单元的地址必须是连续的。
优点:一般情况下,存储密度大,存储空间利用率高。
缺点:(1)在做插入和删除操作时,需移动大量元素;(2)由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。
链式结构存储时,相邻数据元素可随意存放,所占空间分为两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。
优点:插入和删除元素时很方便,使用灵活。
缺点:存储密度小,存储空间利用率低。
3.什么情况下用顺序表比链表好?答:顺序表适于做查找这样的静态操作,链表适于做插入和删除这样的动态操作。
如果线性表的变化长度变化不大,且其主要操作是查找,则采用顺序表;如果线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
4.解释头结点、第一个结点(或称首元结点)、头指针这三个概念的区别?答:头结点是在链表的开始结点之前附加的一个结点;第一个结点(或称首元结点)是链表中存储第一个数据元素的结点;头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。
5.解释带头结点的单链表和不带头结点的单链表的区别。
答:带头结点的单链表和不带头结点的单链表的区别主要体现在其结构上和算法操作上。
在结构上,带头结点的单链表,不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点;在操作上,带头结点的单链表的初始化为申请一个头结点。
无论插入或删除的位置是地第一个结点还是其他结点,算法步骤都相同。
不带头结点的单链表,其算法步骤要分别考虑插入或删除的位置是第一个结点还是其他结点。
因为两种情况的算法步骤不同。
四、程序填空:1.(1) p->data=i; (2) p->next=NULL; (3) q->next=p; (4)q=p;2. (1) head=p; (2) q=p; (3) p->next=NULL; (4) p->next=q->next (5) q->next=p;3. (1) p=(NODE *) malloc (sizeof(NODE)); (2) p->data=x;五、完成:实验1――线性表根据实验要求(见教材P201-202)认真完成本实验,并提交实验报告。
数据结构(本)形考作业3参考答案:一、单项选择题1.B 2.B 3.D 4.C 5.B 6.A 7.A 8.B 9.A 10. D11. A 12.C 13.D 14.B 15.B 16.B 17.无 18.A 19.C 20.B21.A 22.B 23. B 24. B 25. C 26. A 27.A 28.C二、填空题1.出度和入度之和 2.树中结点的度的最大值 3.分支结点非终端结点 4.叶子结点终端结点5. 逻辑后继直接后继结点孩子结点6.祖先结点7.从根结点开始到叶结点的最大路径长度8. Log2n+1」(上取整)9. 根结点左子树右子树10. 左子树根结点右子树 11.左子树右子树根结点12.权 13.带权路径长度之和14.最优二叉树值最小的二叉树15.69 16.2m-1 17. 多对多 m:m 18.每个结点 1次 19.先根 20.后根 21.n*n 22.邻接矩阵邻接表 23.n-1 24. n-1 25.栈三、综合题1.写出如下图所示的二叉树的先序、中序和后序遍历序列。
答:二叉树的定义是递归的,所以,一棵二叉树可看作由根结点,左子树和右子树这三个基本部分组成,即依次遍历整个二叉树,又左子树或者右子树又可看作一棵二叉树并继续分为根结点、左子树和右子树三个部分…..,这样划分一直进行到树叶结点。
(1)先序为“根左右”,先序序列为:fdbacegihl(2)中序为“左根右”,中序序列为:abcdefghij(3)后序为“左右根”,后序序列为:acbedhjigf2.已知某二叉树的先序遍历结果是:A,B,D,G,C,E,H,L,I,K,M,F和J,它的中序遍历结果是:G,D,B,A,L,H,E,K,I,M,C,F和J,请画出这棵二叉树,并写出该该二叉树后续遍历的结果。
(1)二叉树图形表示如下:(2)该二叉树后序遍历的结果是:G、D、B、L、H、K、M、I、E、J、F、C和A。
3.答⑴已知深度为k的二叉树最多有2k-1个结点(K≥1),29-1<892< 210-1,故树的高度为10⑵对于完全二叉树来说,度为1的结点只能是0或1因为n=n0+n1+n2和n0=n2+1得:设n1=0,892=n0+0+n2=2n2+1得n2不为整数出错设n1=1,892=n0+1+n2=2n2+2得n2 =445→ n0=n2+1=446叶子结点数为446。
⑶由⑵得单支结点数为1⑷对于n个结点的完全二叉树,最后一个树叶结点,即序号为n的叶结点其双亲结点即为最后一个非终端结点,序号为892/2=446。
4.(1)先序序列和中序序列相同的二叉树为空树或任一结点均无左孩子的非空二叉树(2)中序和后序序列相同的二叉树为空树或任一结点均无右孩子的非空二叉树(3)先序和后序序列相同的二叉树为空树或仅有一个结点5.(1)哈夫曼树如图B-4所示。
(2)其带权路径长度WPL值为270。
(3)每个字符的哈夫曼编码为:A:100, B:11, C:1010, D:000, E:0010, F:10110, G:10111, H:0011, I:016.答(1)深度优先遍历:v1,v2,v3,v8,v5,v7,v4,v6 广度优先遍历:v1,v2,v4,v6,v3,v5,v7,v8(2) G的拓扑序列为:v1,v2,v4,v6,v5,v5,v3,v5,v7,v8(3)最短路径为:v1,v2,v5,v7,v87.①g1的图示和图g1的邻接表如下图所示。
②图G的邻接矩阵如下图所示:③V1、V2、V3、V4、V5的度分别为:2,3,2,3,2四、程序分析题1. (1) return c1+1 (2) NodeLevel(BT->right,X) (3) (c2>=1) return c2+1 2.(1)for(j=0; j<n; j++) (2) dfstree(GA,j,n);五、算法设计题1.写一个将一棵二叉树复制给另一棵二叉树的算法。
define NULL 0typedef struct btnode{ elemtype data;struct btnode *lchild, *rchild; }bitnode, *bitree;if ( p!=NULL ){ t=(bitnode *)malloc (sizeof (bitnode));t->data=p->data;t->lchild=CopyTree(p->lchild);t->rchild=CopyTree(p->rchild);return(t);}else return(NULL);}2.int BTreeLeafCount(struct BTreeNode* BT){ if(BT==NULL) return 0;else if(BT->left==NULL && BT->right==NULL) return 1;else return BTreeLeafCount(BT->left)+BTreeLeafCount(BT->right);}六、完成:实验3――栈、队列、递归程序设计,实验4——图的存储方式和应用根据实验要求(见教材P203)认真完成本实验,并提交实验报告。
数据结构(本)形考作业4参考答案(2009-03-31 20:19:06)转载分类:作业辅导标签:教育作业4部分答案一、单项选择题1.D 2.C 3.C 4.C 5.D 6.A 7.C 8.D 9.B 10.D11.A 12.C 13.A 14.C 15.D 16.B 17.B 18.D 19.D 20.D21.D 22.D 23.A 24.A 25.C 26.D 27.B 28.A 29.B 30.C二、填空题1.散列2.特征项数据元素3.主键4.平均值5.顺序6.二分查找升序有序7.顺序存储 8.索引查找顺序查找 9.小于根结点的值大于(或大于等于)根结点的值10.自变量地址值 11.9,14,16 ,17 12.内部排序外部排序 13.交换排序 14.3 15.4 8 16.堆排序快速排序 17.主关键字 18.关键字相等的记录 19.n-1,n-j 20.堆尾堆顶向下三、综合题1.已知序列(70,83,100,65,10,32,7,9),请写出对此序列采用插入排序法进行升序排序时各趟的结果。
答:原始序列:(70),83,100,65,10,32,7,9第1趟:(70,83),100,65,10,32,7,9第2趟:(70,83,100),65,10,32,7,9第3趟:(65,70,83,100),10,32,7,9第4趟:(10,65,70,83,100),32,7,9第5趟:(10,32,65,70,83,100),7,9第6趟:(7,10,32,65,70,83,100),9第7趟:(7,9,10,32,65,70,83,100)2.已知序列(10,18,4,3,6,12,1,9,15,8),请写出对此序列采用归并排序法进行升序排序时各趟的结果。