CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

比如一个链表,还有树和图之类的要借助于指针或者引用来实现的数据结构,在c#里面怎么实现呢?

楼主tczyp()2006-05-01 16:52:43 在 .NET技术 / C# 提问

在c#里面结构体是一种值类型,所以不能使用引用来控制结构体,那样的话,好像很多经典的数据结构思想方法都不能在C#里面运用啊。。。   比如一个链表,还有树和图之类的要借助于指针或者引用来实现的数据结构,在c#里面怎么实现呢?  
  问题点数:20、回复次数:9Top

1 楼feels30000(船长)回复于 2006-05-01 21:02:09 得分 0

我觉得你想和C   一样的操作也可以用保护代码,但大多数的数据结构还是可以实现的,可能效率不是这么高Top

2 楼tczyp()回复于 2006-05-01 22:25:14 得分 0

但是像链表,树之类的数据结构是非常常用的...  
  难道C#对这么常用的数据结构都不提供一种方便的方法吗?Top

3 楼ivorstar(单击此处留言)回复于 2006-05-01 22:42:16 得分 20

比如你定义一个链表  
  class   ListNode  
  {  
          private   ListNode   m_next;  
          public   ListNode   Next{get{....};   set{....};   }  
          //写成属性或者干脆写成公有成员变量,不是一样么,都可以用.Next来得到啊,不过效率差距很大了;都是引用类型,觉得跟指针操作差别不大  
  }  
  如果非要用指针的话只能是unsafe的了。Top

4 楼tczyp()回复于 2006-05-01 23:15:59 得分 0

哦,类是引用类型的,这倒是可以实现链表。效率差距很大?为什么这样说?既然是引用,那么本质上应该也是一个指针吧?只不过该指针是一个已经被绑定了的指针吧?Top

5 楼tczyp()回复于 2006-05-03 01:09:49 得分 0

???Top

6 楼tczyp()回复于 2006-05-03 01:16:32 得分 0

public   Node[]   Neighbours   =   {   null,   null,   null,   null   };  
  我见到过这样一种定义方法,不知道它的意思是不是定义一个Node类型的指针数组?Top

7 楼ivorstar(单击此处留言)回复于 2006-05-03 10:26:16 得分 0

效率的差距因为IL毕竟不是本地代码,不被CPU直接执行^_^  
  Node[]那个不是指针数组吧,只不过是把数组里的每一个Node初始化为null,也就是在托管堆(如果Node是class的话)里都是二进制的0Top

8 楼shrinerain(圣影雨)回复于 2006-05-03 10:53:56 得分 0

数据结构,算法与语言无关,实际上很多经典数据结构算法都是Pascal写的,甚至SmallTalk  
   
  如果你想用C#描述  
   
  差别只是在C++中是Node=Node->Next  
   
  改成C#中的Node=Node.Next  
   
  引用本质是类型安全的指针  
   
  如果你不明白,可以买本   数据结构(Java语言描述)   就行了。  
   
   
   
  Top

9 楼tczyp()回复于 2006-05-03 11:42:03 得分 0

那么现在我还有一点不太明白,就是c#里面的结构体为什么要设定为值类型?既然结构体是一个简化了的类(轻量级的类),为什么设定为引用类型?  
  另外,引用本质上也是指针,那么速度上来说应该影响不大吧~~Top

相关问题

关键词

得分解答快速导航

  • 帖主:tczyp
  • ivorstar

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo