C#数据结构和算法的定义

4

这可能是一个愚蠢的问题(在MSDN等网站上都可以找到答案),但也许你们中的一些人能够帮助我筛选大量信息。

我需要了解C#中常见数据结构和算法的具体实现细节。例如,我需要知道链表是如何处理和表示的,它们的方法是如何定义的。

是否有一个好的集中化文档来源(包含代码),或者我应该自己重建?你是否曾经需要了解这些具体细节来决定使用什么?

谢谢!


7
你面试前还有多少时间? - Ed Guiness
哈哈哈哈哈哈。我不参加面试。我是一个贫穷的计算机科学教授。只是在做一些研究,这变得很关键。但这让我笑了。 - Dervin Thunk
糟糕,很抱歉我不知情地向一位计算机科学教授推荐了CLRS。 - Mehrdad Afshari
别担心,他确实说了“穷”,所以也许他还买不起呢 ;) - Alice Purcell
不需要购买所有的东西。我们中的许多人只是从图书馆阅读这些书籍,无需拥有也能了解。 :) - Dervin Thunk
不要忘记盗版 ;) - Mehrdad Afshari
3个回答

8

Scott Mitchell撰写了一篇很棒的六部分文章,涵盖了许多.NET数据结构:

数据结构的广泛考察

对于数据结构的算法概述,我建议阅读Cormen等人所著的“算法导论”。

对于每个.NET数据结构的详细信息,该特定类的MSDN页面是不错的选择。

当所有这些都无法解决问题时,Reflector总是可以帮上忙。您可以使用它来深入挖掘实际的源代码并自行查看。


很好的答案,Mehrdad。谢谢。同时感谢您对我给samoz的评论进行澄清。 - Dervin Thunk

1

如果你真的想学习它,试着自己动手做一下。

在谷歌上搜索链表会给你很多相关结果和示例代码供参考。维基百科也是一个很好的资源。


这并不是一个坏主意……但我在想,也许 C# 有一些优化,如果我不真正了解 CLI 等内容,可能永远无法实现,而我没有太多时间深入研究。 - Dervin Thunk
@Dervin:我认为集合类在CIL级别没有特定的优化。不过,在内部,运行时可以以特殊方式处理一些类。例如,我认为List<T>的操作是由运行时进行了优化。 - Mehrdad Afshari

-1

这取决于编程语言。大多数语言现在都内置了非常基础的功能,但这并不意味着它们的实现方式相同。相同名称的对象--C#中的LinkedList与Java或C++中的LinkedList完全不同。甚至String库也是不同的。例如,C#被认为在每次为字符串分配新值时创建一个新的String对象......当您第一次在C#中使用子字符串时,这会迅速让您的程序崩溃,这是您很快就会学到的问题。

因此,对于你的问题,答案非常复杂,因为我不确定你想要什么。如果你只是要教授一个算法和数据结构的通用版本,你可以在不涉及上述问题的情况下展示它们。你只需要选择、查找、阅读特定类型的实现方式。例如,对于LinkedList,您需要能够实例化列表、销毁列表、复制列表、在列表的某个位置添加(通常是前面/后面)或从列表中删除等等。您还可以根据需要添加尽可能多的方法。


只是提供信息,原帖的问题是关于C#实现的;想要看看它们是如何编码的。 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接