首页新闻找找看学习计划

c#内置的Stack、Queue、Dictionary为什么都是用数组实现而非使用链表?

0
[待解决问题]

c#内置的Stack、Queue、Dictionary为什么都是用数组实现而非使用链表?

Marble的主页 Marble | 菜鸟二级 | 园豆:201
提问于:2019-04-30 10:12
< >
分享
所有回答(4)
0

我个人觉得数组比较简单。我刚看了下源码,很多操作都需要新建数组,感觉就是空间换时间吧。另外像Queue这种,感觉数组会比链表方便很多,链表查询一头方便,查询另一头要遍历所有元素,而数组可以随机读取

会长 | 园豆:6159 (大侠五级) | 2019-04-30 10:24
0

C#很少会用到指针吧

王站住 | 园豆:117 (初学一级) | 2019-04-30 11:15
0

猜测是为了性能:

If Count is less than the capacity of the stack, Push is an O(1) operation. If the capacity needs to be increased to accommodate the new element, Push becomes an O(n) operation, where n is Count. Pop is an O(1) operation.

来源: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.stack-1?redirectedfrom=MSDN&view=netframework-4.8#remarks

不如隐茶去 | 园豆:549 (小虾三级) | 2019-04-30 13:24
0

数组可以不按顺序查找,比如想获取数组中第5个数据,则 var a=b[4];,链表是按顺序查找的不能直接获取,比如想获取第5个数据,需要从第一个找起,因为每个元素的位置信息在上一个元素中,印象中好像是这样,不对请见谅

jqw2009 | 园豆:1931 (小虾三级) | 2019-04-30 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册