实践一:时间复杂度分析数组
(1)for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
(2)void fun(int n) {
int i=l;
while(i<=n)
i=i*10;
}
(3)int i, j,sum;
i=0;
j=0;
sum = i+j;
(4)void fun (int n){
int i=0;
while(i*i*i<=n)
i++;
}
实践二:完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。网络
public T peek() throws EmptyCollectionException
{
}
public boolean isEmpty()
{
// To be completed as a Programming Project
}
public int size()
{
// To be completed as a Programming Project
}
public String toString()
{
// To be completed as a Programming Project
}
实践三:写出链表中节点插入的操做代码(伪代码)
public static void InsertNode(Student2 Head, Student2 node){
}
- 实践四:链表练习,要求实现下列功能
- (1)经过键盘输入一些整数,创建一个链表
- (2)实现节点插入、删除、输出操做
- (3)使用冒泡排序法或者选择排序法根据数值大小对链表进行排序
- 实践五:运行PP28,PP28页的程序
- 根据我的学号输入后缀表达式并计算。(例如,学号172301,输入1 7 + 2 3 0 1 - + *)
- 实践六:给出size、isEmpty和toString等方法的定义,以完成LinkedStack
类的实现。
- 1.可以运行
- 2.须要测试各个方法
- 3.把代码上传到码云,并将关键代码和运行结果截图加水印(学号)上传。
- 实践七:代码检查P72-P73
- 凯撒密码程序。
- 把结果截图,加学号水印,上传到蓝墨云。
- 实践八:使用循环队列输出杨辉三角
- (1)用数组实现循环队列(要考虑扩容问题,不然不加分)
- (2)输出杨辉三角
- (3)代码运行结果添加学号水印,并上传;代码传到码云,附上码云连接。
实践九:栈队列测试题
实践十:运行PP6.8和PP6.11的程序,
- 实践十一:定义一个商品类Product,须要包括商品名称、价格等信息,使用链式存储结构实现一个线性表,存储商店中的商品。支持插入、删除、选择排序、查找等功能,并进行简单测试。须要使用的知识点:
- 1.泛型
- 2.实现Comparable接口中的方法
- 3.链式存储结构
实践十二:已知线性表具备元素{5,13,19,21,37,56,64,75,80,88,92} 若是使用折半查找法,ASL是多少?
实践十三:画出存储形式和asl的计算
- 实践十四:把本身的学号加21,例如学号为1,把22添加到序列后面,使用链地址法,解决冲突。编程实现,并测试。
实践十五:当D2等于2时,第2趟排序结果是?
- 实践十六:计算题
- 1.有1023个结点的彻底二叉树,其高度是多少?叶结点数是多少?
- 2.高度为h的彻底二叉树至少有多少个结点?至多有多少个结点?
- 3.已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,…,nm个度为m的结点,问该树中有多少个叶结点?
实践十七:参考下面叶子节点计算的伪代码,计算课本中背部疼痛诊断器中决策树的叶子节点个数?
int CountLeaf ( BiTree T, int &count )
{ if ( T )
{ if ( (!T->lchild) && (!T->rchild) )
count++; // 对叶子结点计数
CountLeaf( T->lchild, count);
CountLeaf( T->rchild, count);
}
}
- 实践十八:若已知中序和先序序列,计算二叉树结构
- 例:已知一棵二叉树的先序序列和中序序列分别为ABDGHCEFI 和 GDHBAECIF,试肯定二叉树结构。
- 根据课堂介绍的递归树深度计算算法,计算决策树的深度。
- 实践十九:使用递归实现层次遍历背部疼痛决策树,并按照层次顺序输出每一个节点内容。
- 非递归的层次遍历法算法以下:
- 根结点入队;从队头取元素,并执行以下3个动做:
- (1)访问该结点;
- (2)若是该元素有左孩子,则左孩子入队;
- (3)若是该元素有右孩子,则右孩子入队;
- 重复执行上述过程,直至队列为空。此时,二叉树遍历结束。按照上述算法,编程实现层序遍历,按照层序的方法,遍历并依次输出每一个节点内容。(3分)
实践二十:根据关键字序列:36,30,18,40,32,45,22,50,构造一颗小顶堆,并排序?画出构造堆过程(树+数组)
- 实践二十一:根据关键字序列:36,30,18,40,32,45,22,50,利用数组构造一颗大顶堆,并排序。
要求:
- (1)输出构造好的大顶堆序列(层序)
- (2)输出每轮排序的结果(数组的结果)
- 把结果截图并加学号水印上传到蓝墨云,代码上传到码云。
- 实践二十二:使用Dijkstra(迪杰斯特拉)算法计算单源(V1出发)最短路径。
- (1)写出V1到各个顶点的最短路径
- (2)要求写出最短路径计算过程(相似于图2)
- 实践二十三:AOE练习
- 一、求关键路径,v1和ve的值并写出具体步骤
- 二、画出图一可能的拓扑序列
- 三、画出图二所示无向图的邻接矩阵、邻接链表,并列出深度优先和广度优先遍历图所得的顶点序列。
- 四、写出图三的邻接矩阵,并用prim算法求最小生成树,画出产生过程
- 实践二十四:哈夫曼编码测试
- 设有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。给定一个包含26个英文字母的文件,统计每一个字符出现的几率,根据计算的几率构造一颗哈夫曼树。并完成对英文文件的编码和解码。
- 要求:
- (1)准备一个包含26个英文字母的英文文件(能够不包含标点符号等),统计各个字符的几率
- (2)构造哈夫曼树
- (3)对英文文件进行编码,输出一个编码后的文件
- (4)对编码文件进行解码,输出一个解码后的文件
- (5)撰写博客记录实验的设计和实现过程,并将源代码传到码云
- 课堂实践对提升应用能力有帮助吗?
- 我以为课堂实践能够提升部分同窗的能力,接受能力比较慢的同窗须要温习一下才能熟练运用。我以为能够课堂实践与课后实践相结合,或是课堂实践采用难度比较适合大多人的程度会比较好。
- 课堂实践上本身有什么经验教训?
- 像算法之类的计算问题或是简单的编程问题都是很简单就解决的,可是比较困难的编程问题就很难了,须要细细的思考或要考虑清楚,这样的话就有可能完不成课堂实践的相关内容。为了可以遇上别的同窗,须要更屡次的尝试和提早的学习来弥补不足。
- 课堂实践上对老师有什么教学建议?
- 没有什么意见,比对两个学期的课堂实践,本学期的明显增多,并且也开设了许多的额外实践,为你们提供了不一样的实践课程,很好的。