1、插入和删除元素时很方便,使用灵活。存储密度小,存储空间利用率低。3什么情况下用顺序表比链表好?顺序表适于做查找这样的静态操作,链表适于做插入和删除这样的动态操作。如果线性表的变化长度变化不大,且其主要操作是查找,则采用顺序表;如果线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。4解释头结点、第一个结点(或称首元结点)、头指针这三个概念的区别?头结点是在链表的开始结点之前附加的一个结点;第一个结点(或称首元结点)是链表中存储第一个数据元素的结点;头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。5解释带头结点的单链表和不带头结点的单链表的区别。 答:带头结点的单链表和
2、不带头结点的单链表的区别主要体现在其结构上和算法操作上。在结构上,带头结点的单链表,不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点。在操作上,带头结点的单链表的初始化为申请一个头结点。无论插入或删除的位置是地第一个结点还是其他结点,算法步骤都相同。不带头结点的单链表,其算法步骤要分别考虑插入或删除的位置是第一个结点还是其他结点。因为两种情况的算法步骤不同。四、程序填空题1(1)p-data=i(2)p-next=NULL(3)q-next=p(4)q=p2(1)head=p(2)q=p(3)p-(4)p-next=q-next(5)q-3(1)p=q-(2)q-五、完成:实验
3、1线性表根据实验要求(见教材P201-202)认真完成本实验,并提交实验报告。作业2答案(本部分作业覆盖教材第3-5章的内容)1C 2B 3A 4C 5B 6A 7B 8C 9A 10C 11B 12C 13B 14B 15A 16C 17B 18A 19C 20D 21B 22D 23C 24B 25D 26A 27C 28D 29D 30C 31A 32D 1后进先出2下一个3增1 增14假上溢5 栈是否满 s-top=MAXSIZE-1 栈顶指针 栈顶对应的数组元素 栈是否空 s-top=-1 栈顶元素 修改栈顶指针6bceda7终止条件 递归部分8LU-front=LU-rear9运算
4、符 操作数 ab+c/fde/-10s-next=h;11h=h-12r-next=s;13f=f- 14字符 15顺序存储方式 链式存储方式 160 空格字符的个数 17特殊 稀疏 18() () 2 19(d,e,f) 20串长度相等且对应位置的字符相等 21i(i-1)/2+j 22行下标、列下标、非零元素值1简述栈和一般线性表的区别。栈是一种先进后出的线性表,栈的插入和删除操作都只能在栈顶进行,而一般的线性表可以在线性表的任何位置进行插入和删除操作。2简述队列和一般线性表的区别。队列是一种先进先出的线性表,队列的插入只能在队尾进行,队列的删除只能在队头进行,而一般的线性表可以在线性表的
5、任何位置进行插入和删除操作。3链栈中为何不设头结点?因为链栈只在链头插入和删除结点,不可能在链表中间插入和删除结点,算法实现很简单,所以一般不设置头结点。4利用一个栈,则:(1)如果输入序列由A,B,C组成,试给出全部可能的输出序列和不可能的输出序列。(2)如果输入序列由A,B,C,D组成,试给出全部可能的输出序列和不可能的输出序列。(1)栈的操作特点是后进先出,因此输出序列有:A入,A出,B入,B出,C入C出,输出序列为ABC。A入,A出,B入,C入,C出,B出,输出序列为ACB。A入,B入,B出,A出,C入,C出,输出序列为BAC。A入,B入,B出,C入,C出,A出,输出序列为BCA。A入
6、,B入,C入,C出,B出,A出,输出序列为CBA。由A,B,C组成的数据项,除上述五个不同的组合外,还有一个C,A,B组合。但不可能先把C出栈,再把A出栈,(A不在栈顶位置),最后把B出栈,所以序列CAB不可能由输入序列A,B,C 通过栈得到。(2)按照上述方法,可能的输出序列有:ABCD,ABDC,ACBD,ACDB,ADCB,BACD,BADC,BCAD,BCDA,BDCA,CBAD,CBDA,CDBA,DCBA。不可能的输出序列有:DABC,ADBC,DACB,DBAC,BDAC,DBCA,DCAB,CDAB,CADB,CABD5用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1234
7、,为了得到1342出栈顺序,相应的S和X操作串是什么?应是SXSSXSXX。各操作结果如下:S 1入栈X 1出栈 输出序列:1S 2入栈S 3入栈X 3出栈 输出序列:13S 4入栈 X 4出栈 输出序列:134X 2出栈 输出序列:1342 6有5个元素,其入栈次序为:A、B、C、D、E,在各种可能的出栈次序中,以元素C、D最先的次序有哪几个?从题中可知,要使C第一个且D第二个出栈,应是A入栈,B入栈,C入栈,C出栈,D入栈。之后可以有以下几种情况:(1)B出栈,A出栈,E入栈,E出栈,输出序列为:CDBAE。(2)B出栈,E入栈,E出栈,A 出栈,输出序列为CDBEA。(3)E入栈,E出栈
8、,B出栈,A出栈,输出序列为CDEBA所以可能的次序有:CDBAE,CDBEA,CDEBA7写出以下运算式的后缀算术运算式 3x2+x-1/x+5 (A+B)*C-D/(E+F)+G答;对应的后缀算术运算式 3x2*x+1x/-5+ AB+C*DEF+/-G+8 简述广义表和线性表的区别和联系。广义表是线性表的的推广,它也是n(n0)个元素a1 ,a2ai an的有限序列,其中ai或者是原子或者是一个广义表。所以,广义表是一种递归数据结构,而线性表没有这种特性,线性表可以看成广义表的特殊情况,当ai都是原子时,广义表退化成线性表。(1)q-front-(2)free(p);rear=q-fro
9、nt五、综合题出队序列是e2,e4,e3,e6,e5,e1的过程: e1入栈(栈底到栈顶元素是e1) e2入栈(栈底到栈顶元素是e1,e2) e2出栈(栈底到栈顶元素是e1) e3入栈(栈底到栈顶元素是e1,e3) e4入栈(栈底到栈顶元素是e1,e3,e4) e4出栈(栈底到栈顶元素是e1,e3) e3出栈(栈底到栈顶元素是e1) e5入栈(栈底到栈顶元素是e1,e5) e6入栈(栈底到栈顶元素是e1,e5,e6) e6出栈(栈底到栈顶元素是e1,e5) e5出栈(栈底到栈顶元素是e1) e1出栈(栈底到栈顶元素是空)栈中最多时有3个元素,所以栈S的容量至少是3。算法设计如下:/*只有一个指
10、针rear的链式队的基本操作*/#include typedef char elemtype;struct node /*定义链队列结点*/ elemtype data; struct node *next;typedef struct queue /*定义链队列数据类型*/ struct node *rear; LinkQueue;void initqueue(LinkQueue *Q)/*初始化队列*/ Q=(struct queue *)malloc(sizeof(struct queue); Q-rear=NULL;void enqueue(LinkQueue *Q,elemtype
11、x) /*入队算法*/ struct node *s,*p; s=(struct node *)malloc(sizeof(struct node); s-data=x; if (Q-rear=NULL) /*原为空队时*/ Q-rear=s; s- else /*原队不为空时*/ p=Q-rear- /*p指向第一个结点*/ /*将s链接到队尾*/ /*Q-rear指向队尾*/next=p;void delqueue(LinkQueue *Q) /*出队算法*/ struct node *t;rear=NULL) printf(队列为空!n); return(0); else if (Q-n
12、ext=Q-rear) /*只有一个结点时*/ t=Q-rear; Q- else /*有多个结点时*/ /*t指向第一个结点*/next=t- /*引成循环链*/ free(t); elemtype gethead(LinkQueue *Q) /*取队首元素算法*/ printf( else return(Q-next-data); int emptyqueue(LinkQueue *Q) /*判断队列是否为空算法*/rear=NULL) return(1); /*为空,则返回true*/ else return(0); /*不为空,则返回flase*/void dispqueue(Link
13、Queue *Q) /*显示队列中元素算法*/ struct node *p=Q- printf(队列元素: while (p!=Q-rear)%c ,p- p=p-%cn六、完成:实验2栈、队列、递归程序设计根据实验要求(见教材P203)认真完成本实验,并提交实验报告。作业3答案(本部分作业覆盖教材第6-7章的内容)1B 2B 3D 4C 5B 6A 7A 8C 9A 10. D11. A 12C 13C 14B 15B 16C 17B 18C 19A 20B21D 22B 23. B 24. B 25. C 26. A 27A 28C1子树树木或后继结点数2树中所有结点的度的最大值3分支结
14、点 非终端结点4叶子结点 终端结点5子树的根 后继结点 孩子结点6祖先7树中结点的最大层数89根结点 左子树 右子树10左子树 根结点 右子树11左子树 右子树 根结点12权13带权路径长度之和14最优二叉树 最小的二叉树1569 162m-1 17多对多18所有顶点 一次19先序 20按层次21n222邻接矩阵 邻接表232(n-1)24n-125栈三、综合题1写出如下图所示的二叉树的先序、中序和后序遍历序列。二叉树的定义是递归的,所以,一棵二叉树可看作由根结点,左子树和右子树这三个基本部分组成,即依次遍历整个二叉树,又左子树或者右子树又可看作一棵二叉树并继续分为根结点、左子树和右子树三个部
15、分.,这样划分一直进行到树叶结点。(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个结点(K1), 29-1892rig
16、ht,X) (3) (c2=1) return c2+12(1)for(j=0; jdata=p-data;lchild=CopyTree(p-lchild);rchild=CopyTree(p-rchild); return(t); return(NULL);/*CopyTree*/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)+BTreeLe
17、afCount(BT-right);实验3栈、队列、递归程序设计 实验4图的存储方式和应用作业4答案(本部分作业覆盖教材第8-9章的内容)1D 2C 3B 4C 5D 6 7C 8D 9B 10D 11C 12C 13A 14C 15D 16B 17B 18D 19D 20A21D 22D 23A 24A 25C 26C 27B 28A 29B 30C1哈希表查找法2数据项的值 记录3主关键字4数学期望值5顺序6二分查找 升序或降序排列 7顺序存储结构 8索引顺序查找 顺序查找9均小于根结点的值 均大于根结点的值 二叉排序树10自变量 函数值119, 14, 16 ,17 12内部排序 外部排
18、序 13交换排序 143154 816堆排序 快速排序17主关键字 18关键字相等的记录19n-1,n-j20堆尾 堆顶 向下 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
19、,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),请写出对此序列采用归并排序法进行升序排序时各趟的结果。10,18,4,3,6,12,1,9,15,8 10,18 3,46,121,9 8,15 3,4,10,18, 1,6,9,12 8,15 3,4,10,18, 1,6,8,9,12,15 1,3,4,6,8,9,10,12,15,183已知序列(17,18,60,40,7,32,73,65,85)采用冒泡排序法排序的各趟的结果如下:原始初始:17,18,60,40,7,32,73,6
20、5,8517,18,40,7,32,60,65,73,8517,18,7,32,40,60,65,73,8517,7,18,32,40,60,65,73,857,17,18,32,40,60,65,73,857,17,18,32,40,60,65,73,85 4已知序列(503,87,512,61,908,170,897,275,653,462)请给出采用快速排序法对该序列作升序排列时的每一趟结果。503,87,512,61,908,170,897,275,653,462 462,87,275,61,170503897,908,653,512 170,87,275,61 462,503897,908,653,512 87,61170275 462,503897,908,653,512 61 87170275 462,503897,908,653,512 61 ,87,170,275 462,503897,908,653,512 61 ,87,170,275,462,503897,908,653,512 61 ,87,170,275,462,503512,653897908第8趟: 61 ,87,170,275,462,503,512,653 897908第9趟: 61 ,87,170,275,462,503,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1