数据结构第一次至第四次作业答案 下载本文

内容发布更新时间 : 2024/5/11 14:22:35星期一 下面是文章的全部内容请认真阅读。

第一次作业答案 填空题:

1、已知栈的基本操作函数:

int InitStack(SqStack *S); //构造空栈 int StackEmpty(SqStack *S);//判断栈空 int Push(SqStack*S,ElemType e);//入栈 int Pop(SqStack *S,ElemType *e);//出栈

函数conversion实现十进制数转换为八进制数,请将函数补充完整。

void conversion(){ InitStack(S); scanf(\N); while(N){ Push(S,N%8) ; N=N/8;

}

while( !StackEmpty(S) ){ Pop(S,&e);

printf(\ }

}//conversion

2.设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,则队列中元素的个数为(615)。

3.在一个单链表中删除p所指结点的后继结点时,应执行以下操作: q=p->next; p->next=(q->next)

4.一个算法的效率可分为(时间 )效率和( 空间)效率。

5.数据结构被形式地定义为(D, R),其中D是(数据元素 )的有限集合,R是D上的(关系)有限集合。

6.下面程序段的时间复杂度是(0(m*n))

for(i=0;i

选择题:B 判断题:错误 正确 错误 单选题:A D B 多选题:ACD ACD CD

第二次作业答案

选择题:A D B B C B 判断题:错误 错误 主观题:

3、广义表A=((a),a)的表头是(a)

4、稀疏矩阵一般的压缩存储方法有(三元组)和(十字链表)两种。

5、用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R[1..N]中,若结点R有右孩子,则其右孩子是R[2i+1]。

6、如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是连通图。

7、n个顶点的连通图至少有n-1条边。

8、已知一个有序表为(11,22,33,44,55,66,77,88,99),则折半查找55需要比较(1)次

9、对一棵二叉排序树按(中序)遍历,可得到结点值从小到大的排列序列。 10、一个序列中有10000个元素,若只想得到其中前10个最小元素,则最好采用(堆排序)方法。

第三次作业答案 B C C 论述题: 1.

答:共计14种,分别是:1234, 1243, 1324, 1342, 1432, 2134, 2143, 2341, 2314, 2431, 3214, 3241, 3421, 4321 。

主观题答案:

答:

1、① 全进之后再出情况,只有1种:4,3,2,1

② 进3个之后再出的情况,有3种,3,4,2,1 3,2,4,1 3,2,1,4 ③ 进2个之后再出的情况,有5种,2,4,3,1 2,3,4,1 2,1, 3,4 2,1,4,3 2,1,3,4

④ 进1个之后再出的情况,有5种,1,4,3,2 1,3,2,4 1,3,4,2 1, 2,3,4 1,2,4,3

2、先序遍历:BEFCGDH 中序遍历:FEBGCHD 后序遍历:FEHGDCB 3、DLR(liuyu *root) /*中序遍历 递归函数*/ {if(root!=NULL)

{if((root->lchild==NULL)&&(root->rchild==NULL)){sum++; printf(\ DLR(root->lchild); DLR(root->rchild); } return(0);