数据结构学期感悟
如果要用一个字来描述我心目中的数据结构,那么一定是——难!
如果要用一个词来说说老师,答案也毋庸置疑——标新立异!(而且好玩哈哈)
实际上,大一结束后的我完全不知道下学期将要学什么来替代C++,因为我觉得C++已经很难了,真的是万万没想到,出了这门算法与数据结构。一开始我觉得它就是C语言的升级版,因为老师还专门让我们可以先补补C语言,于是对新鲜事物的好奇啊,兴趣啊立马减少了一半。但是老师在群里给我们引进了一个新的学习软件——蓝墨云班课,心里一想,这老师一定挺潮流啊,因为我们大家都是十足的手机控,完全没想到老师会利用手机软件来让我们学习这门课。果不其然,这软件每当学习了一个资源便会得到经验值,很快大家就刷起了经验来提高排名,甚至还有用手机签到检查出勤率,心里满满的惊讶。但是不得不说这个方法真的很好,可以利用这个软件在课前预习好课程,尤其是哪里听不懂还可以反复拿出来看(尤其是期末期间!!!)。
说点正经的有关这门课的专业知识的,虽然说我在这门课里一直是处于小菜鸟的水平,但是处在一个如此浓郁的学习氛围下,好歹也是了解了一些。
数据结构包括线性结构、树形结构、图状结构或网状结构。线性结构包括线性表、栈、队列、串、数组、广义表等等,数组和广义表是对线性表的扩展,而除了线性表以外,栈也是一大重点,栈和递归紧密相连。树状结构里要数二叉树和哈夫曼树了,关于二叉树,大多是关于二叉树的遍历,由此还可以解决二叉树结点的查找访问,求二叉树的深度,统计二叉树中叶子结点的数目等等。对于图状结构,主要是图的存储结构和图的遍历。
关于自己对这门课的学习,有几句话想说,学习的好坏大多取决于对它的兴趣,兴趣是最好的老师。如果把一件事情当成任务去做会很痛苦,而如果当成兴趣会很快乐,如果希望自己能学好这门课,最重要的是把兴趣培养起来,但是我感觉自己可能由于对C++的惧怕,仍然提不起很大的兴致但是有了这个蓝墨云班课作为媒介,也是感觉好多了,多亏了老师的标新立异
下面有一些我在数据结构中记得住的关于二叉树遍历及其应用的算法:
(1)二叉树遍历的递归算法
void PreOrder(BTNode *b) //先序遍历的递归算法
{
if (b!=NULL)
{
printf("%c ",b->data); //访问根节点
PreOrder(b->lchild); //递归访问左子树
PreOrder(b->rchild); //递归访问右子树
}
}
void InOrder(BTNode *b) //中序遍历的递归算法
{
if (b!=NULL)
{
InOrder(b->lchild); //递归访问左子树
printf("%c ",b->data); //访问根节点
InOrder(b->rchild); //递归访问右子树
}
}
void PostOrder(BTNode *b) //后序遍历的递归算法
{
if (b!=NULL)
{
PostOrder(b->lchild); //递归访问左子树
PostOrder(b->rchild); //递归访问右子树
printf("%c ",b->data); //访问根节点
}
}
想了想还是引用一个比较典型的代码吧,二叉树还是比较重要的,想起来上课时特别后悔的事就是没能好好的学会利用画图解决问题,感觉有了画图更能方便理解。
其实这一年感觉不光是学习还是生活过得都很开心,知识有了进步,看老师经常在群里给我们分享文章,感觉真的是灰常融洽。虽然矫情但还是要说一句,老师辛苦啦!
下学期我们一起加油