C#实验笔记#1:第一个程序
我本对分享毫无兴趣,也从未有过编写教程的想法。
然而这个学期的C#课程的教授要求我以教程的形式撰写实验报告。不出所料,写完后总有许多同学欲向我借去"借鉴"。那么多人,一个个发属实有些繁琐,索性丢到 自己的个人站上让大家自由借阅。
于是就有了这一系列笔记。随便写写,从心所欲,谨慎阅读。
C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。
C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。
C# 是专为公共语言基础结构(CLI)设计的。CLI 由可执行代码和运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
配置开发环境
在C#的学习过程中,我们一般使用Visual Studio或者VS Code来编写,前者体积较大,但功能较为完善,配置也较容易;后者虽然轻量,但配置环境对于初学者来说较为困难。所以笔者在此使用了Visual Studio来进行编写。
下载VS
首先前往VS官网进行下载。
然后下载完安装包后进行安装,一路点NEXT就好了。
新建项目
由于这次只是编写一个简单的二叉树,所以我们只要创建控制台应用就足够了。
接着进入下一步,输入程序名称,选择存放目录,之后点击“创建”,就可以开始编写我们的第一个程序了。
第一个程序
作为刚刚接触C#的我们,自然要从一个较为简单的程序开始入手。这里笔者选择抽到了实验2.4:
2.4 用C#构造一棵二叉树,并从根开始,按层的顺序,从右到左,从上到下,依次进行访问。
既然如此,我们就先来了解一下二叉树是什么。
二叉树
二叉树,顾名思义就是一颗拥有二叉的树。从根节点开始,每个节点都分为左右两个子节点,在每个节点处可以存储数据。当然,子节点并不是必需的,可以仅拥有一个子节点,甚至可以没有子节点。
层序遍历
层序遍历,顾名思义:就是按层的顺序进行遍历,从上到下按每层的顺序分别从左到右遍历。例如图中的这棵树,层序遍历的结果就是:
F -> C -> E -> A -> D -> H -> G -> B -> M
很显然,我们要实现的算法与层序遍历类似。
算法实现
创建一棵树
1 | public class Tree |
这就是一个最基础的节点,很简单,就三行代码。第一行储存节点的数据,第二三行分别储存了另外两个节点,默认都为null。
给这棵树赋值
1 | static void CreateTree(Tree tree) |
赋完值后的这棵树长这样:
此时,我们就可以对它进行遍历输出了。
队列
在进行遍历算法之前,我们要先了解一下队列:
队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。
层序遍历需要依靠队列来实现。
遍历
1 | public static void RevLevelOrder(Tree tree) |
遍历算法的实现应该不难理解,主要利用了队列先进先出的特性,每层按从右到左的顺序依次入队,先入队的右节点先出队,出队后再将其子节点按同样的顺序入队,这样等该层处理完,就能按安排好的顺序处理下一行的节点数据。直到队列为空。
代码的输出结果如下:
root right1 left1 right2 left3 left2 right5 right3 left4 right4
显然,符合我们的预期结果,说明算法被正确地实现了。
结
对于第一次接触C#的我们,二叉树的层序遍历算是较为简单的算法,适合作为第一次上手的练手程序。当然,这次实验用到的都只是C#的基础语法,并未涉及到其深层特性。C#是一门十分优秀的语言,值得后续不断地深入。