数据结构C#描述(第一讲:C#中的数据结构类)

    区别于以往的C++描述的数据结构,在C#中,数据结构有了新的解释与描述,那就是基于.NET Framework类库的一个数据结构类-----Collection Class, 在这个Collection类中,涵盖了Array, ArrayList, Stack, Queue, Hash Table SortedList等等一系列的数据结构类型。一言蔽之,在C#中,数据结构的概念就是数据集合(data collection)。

    在.NET中,集合(Collection)主要分为线性集合(Liner collection)非线性集合(nonliner collection)两种。其中,线性集合就是其元素具有唯一的前驱和后继的数据结构类型,例如数组(array)和数组列表(arrayList)以及堆栈和队列;而非线性集合就是指具有多个前驱或者后继的数据结构类型,例如树,图,堆,网等。

    线性集合(Liner collection)根据访问方式的不同主要分为三大类:

    (1)可直接访问的集合类型(Direct Access Collection):该类型的集合数据元素可以直接通过下标(index)来访问,有三种:Array,string,struct。

    其中,string是一个具有值类型表现的特殊的引用类型,如果改变一个string,不能直接改变原string,实际上是像值类型那样,创建了一个新的string,然后赋值。

    至于struct,它跟class的区别就是结构是值类型,而类是引用类型,在使用上,结构的声明和类基本一模一样,C# 中的结构有了更加强大的功能,可以在结构中定义方法,属性和构造函数,然后new一个结构实例使用这些结构成员(整型int,实际上是调用了Int32结构,属于该结构的方法parse()也就可以被整型变量使用)。在创建语法上,结构和类是相同的,只是他们的存储位置不同,使用场合也不同。结构主要用于小的数据结构,结构存储在堆栈上,结构变量声明的时候使用的时候既可以像普通值类型来声明初始化一个结构变量(例如:Dimension是一个结构,可以用如下方法来声明及初始化一个Dimension类型的变量point: Dimension point; point.Length =3; point.Width =6;),也可以用new关键字创建一个结构实例。

    结构和方法使用上最大的区别就是:结构不是为继承而生的,不能从一个结构中继承,一般也不用结构来派生!唯一的例外是结构派生于类system.object,所以结构可以访问system.object的方法。尽管在.NET环境中,有一些数据元素是以class的方式来调用的(例如array和string),但也有很多数据类型是以结构的方式来调用的,例如数值型数据,其中的int型数据就是以Int32结构的方式来调用的,Int32结构中定义了很多有用的方法,例如:Int32.parse(String)方法,就可以将字符串形式表示的一个数字转换为整型。对于结构的使用,有两段代码可供参考:

   (2)顺序访问的集合类型(Sequential Access Collection):该类型的集合是按顺序在一个表中存储数据元素的,这个表是线性的,且这个表的大小可变,能够动态地扩大和缩小。(就是我们常说的数据结构中的顺序表,在一片连续的区域中存储数据),表中的数据元素不能直接通过下标来访问,而是通过对其地址的引用来访问。 主要包括堆栈(stack)和队列(queue)。

   (3)泛化的下标的集合类型(Sequential Access Collection):主要包括哈希表和字典。

    非线性集合(nonLiner collection)根据访问方式的主要分为两大类:

    (1)层次化的集合:主要是常用于文件系统的树形结构。

    (1)组集合:主要是集合和图(网状结构)两种。这种集合中,数据元素无序放置,且每一个的值是唯一的。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值