惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - abatei

AT指令之 TCP/IP 命令 使用 AT 指令进行 Socket 通信 使用 Visual Studio Code 进行远程开发 QR 码详解(下) QR 码详解(上) Contiki学习笔记  第一个程序:Hello World contiki学习笔记---process结构体 用Silverlight打造位运算器(3)--完成 用Silverlight打造位运算器(2)--制作数字文本框控件 用Silverlight打造位运算器(1)--制作简易工具条控件 C#与数据结构--哈希表(Hashtable) 《数据结构(C#语言描述)》目录 C#与数据结构--树论--红黑树(Red Black Tree) Silverlight版拼图游戏 C#与数据结构--树论--平衡二叉树(AVL Tree) 二叉树遍历非递归算法视频 C#与数据结构--图的遍历 C#与数据结构--二叉树的遍历 位标志
新书预告---《数据结构--C#语言描述》
abatei · 2008-10-12 · via 博客园 - abatei

今天终于把《数据结构--C#语言描述》的全稿发给出版社了,出版社还是北京大学出版社,书还是21世纪高职高专系列。书中配套视频也已完成。忙了很长一段时间,终于可以安逸地坐下来再写写博客了。我喜欢那种休闲的生活,高兴的时候坐下来听听歌,看看书。但回想一下却发现这两年过得很紧张,两年两本书,近100集的视频,业余时间几乎都用在这上面了。不过还好,以后又可以享受休闲生活了。
       这本书在《C#程序设计基础教程与实训》还没出版时我就已经在构思了。在我的构想中,认为程序设计的学习最少应该经过三个基础阶段:基础语法→面向对象→数据结构,为什么要学习数据结构呢?因为它可以让你站在更高的层次去看待程序;它可以让我们领略先辈大师们的思想精髓。只有基础打牢了,后面进行深入地学习才会得心应手。当初一直想上数据结构这门课,但数据结构教材不少,都是用C或C++写的,有少量用Java描述,就是没看见有用C#写的数据结构书籍。C#也出来不少年了,市面上C#的书籍也有上千本了,但国内居然没有一本用C#描述数据结构的书籍,实在有些想不通。总不能为了上数据结构而多开一门C语言的课程吧(时至今日,我还是认为C语言是最好的入门语言,它可以让你排除一切杂念,专心于程序逻辑及思想。但它的缺点是没有可视化编程,无法吸引学生眼球。以前我们学校开过这门课,但最终还是放弃了。)没办法,只有自已动手,丰衣足食。现在这三个阶段的课程已经差不多完成了,面向对象这个阶段没有成书,因为高职对于基础并不太重视,时间也不允许,只能将它以视频的方式供学生自学了。当然,这一块还没做完,以后慢慢再完成吧。
       没写书之前一直怀疑使用C#表述数据结构是否合适,必竟一般情况下它不能直接对内存进行操作。但随着写书的不断深入,这种顾虑完全被打消了,C#是如此优美,简洁,它同样可以完美地展现数据结构的内涵。写书过程中参考了不少数据结构方面的书籍,国内的,国外的,感受是国内这方面的书籍更系统、清晰,表述详细合理,外国的月亮并不一定全比中国的圆。当然代码就没得参考了,幸而C#类库中实现了很多数据结构,而且都写得非常漂亮,就是没有注释,读起来有些困难。
    我这本书跟其他的数据结构书籍还是有那么一点点不同的:
1、尽量减少数学公式
    当然不是完全抛弃,一些简单的数学公式还是有的,这样做的目的是降低学习数据结构的门槛。看看《算法导论》里的数学公式,这会使很多人没开始学习就已经害怕了,它并不适合高职学生。数学可以精确地描述数据结构,但很多东西不用数学公式一样可以表达,相对于数学来说,思想更加重要,数学不好并不意味着做不了程序员。我们的培养目标是技能型人才,研究工作还是留给研究生和博士吧。

2、抛弃伪代码
    伪代码可以简单明了地表述数据结构逻辑,但我更喜欢可运行的代码,它可以让你看到实实在在的结果,也可以通过断点调试、单步运行、修改参数等方式查看数据变化,更进一步地了解数据结构。本书的所有代码均为可运行代码,并且秉承了第一本书的风格,对所有代码进行了详细的注释。

3、配套视频教程
    很多人可能感觉数据结构是一门比较难学的课程,但我在这么多年的教学过程中发现,讲算法比讲代码容易多了,只要使用动画的方式演示数据的移动过程再配以一定的讲解,大部份人都可以很轻松地理解算法的思想。 但仅限于思想,至于如何把思想转化为代码我就无能为力了,这只能靠自己。网上有很多数据结构的动画和视频,但动画不配套讲解,很少视频去演示数据的演变过程,难于让人理解。本书的配套视频主要通过动画讲解各数据结构和算法的运算过程,并不讲解代码,所以对于使用其他语言学习数据结构的人也会有一定的帮助。为了能更好地讲解数据结构,我制作了不少动画和程序,很辛苦,贴几个有代表性的出来。

这个是循环队列:

这个是二叉树,设计这个最小面积画树算法花了我不少时间,抓破头皮,几乎绝望的时候突然灵光一闪。。。。。。

本书也介绍了三种画树算法,学习它们对于理解二叉树的本质有很大的帮助。

这个是迷宫问题最短路径算法的PowerPoint动画

这是迷宫问题最短路径程序:

4、深入C#类库进行介绍

      C#集合类中实现了很多的数据结构,如果对这些集合类没有深刻的理解,是很难写好程序的。本书抽取了C#中一些常用的集合类,并对核心源码进行了分析。

5、配套完整实验指导和实训指导

     这给教师授课省了很多事,实训项目选择了八数码问题,大家还记得第一本书中的拼数字游戏和拼图游戏吧?这个项目就是用电脑求解解题步骤的。使用它还是比较合适的,使用了本书所介绍的很多数据结构。

 下面来介绍写书过程中给我留下最深刻印刻的两种数据结构和算法,一个就是KMP算法,一个伟大的算法,个人认为,它是本书中最难的算法。代码非常诡异,区区十数行代码居然包含了如此复杂的逻辑,实在让人汗颜,在此向前辈大师深深地致敬。另一个就是C#中的Dictionary<TKey,TValue>类,第一次读这段代码时让我有拍案叫绝的感觉,实在是太漂亮了,我被她的美所深深折服。感叹自己怎么就想不出这么巧妙的实现呢!当然我也没忘记用程序来展现她的美:

由于是高职高专教材,所以只能介绍那些最基本的数据结构,本书做为数据结构的入门教材还是非常合适的。最遗憾的是没有讲解SortedDictionary,它是红黑树的实现,实在是太过复杂,不适合高职使用。这些高级的数据结构将来我会以博客的方式写出来。

另外本书和第一本书有所不同,不再使用文字介绍例题的界面制作过程,一方面,照着文字做一样可能出错,另一方面界面制作也会占用书本大量空间,所以本书的所有有关界面的制作都放到了视频中,以使读者可以更容易地按照课本代码写出程序。

购买链接:http://product.dangdang.com/product.aspx?product_id=20544747

AVL和红黑树请查看以下网址:

AVL树:

http://www.cnblogs.com/abatei/archive/2008/11/17/1335031.html

红黑树:

http://www.cnblogs.com/abatei/archive/2008/12/17/1356565.html

视频公布了一集,请到以下地址下载:

http://www.fileupyours.com/files/219335/5-2.swf