服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#中的数据结构介绍

C#中的数据结构介绍

2023-02-23 15:03.NET开发菜鸟 C#

这篇文章介绍了C#中的数据结构,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、数组(Array)

数组具有以下的特点:

  • 数组属于线性结构,在内存中是连续存放的。
  • 数组的元素类型必须相同。
  • 数组可以直接通过下标访问。
  • 数组的查找速度非常快,新增和删除速度慢。
  • 数组在初始化时要指定数组长度。

二、动态数组(ArrayList)

动态数组具有以下的特点:

  • ArrayList的底层其实就是一个数组。
  • ArrayList在声明时不必指定长度,会根据存储的数据动态的增加或减少长度。
  • ArrayList会把所有的元素都当做Object处理,因此可以存储不同数据类型的元素。
  • 插入和删除一个元素时,会移动它之后所有元素的位置,效率低,频繁进行插入或者删除元素推荐使用LinkedList。
  • ArrayList是非类型安全的,在插入和删除元素时会进行拆箱和装箱问题,影响性能,效率低。

三、泛型List

泛型List具有以下的特点:

  • List是ArrayList的泛型类。
  • 泛型List需要在声明时指定具体的类型。
  • 泛型List没有装箱和拆箱操作,因此List比ArrayList效率高而且类型安全。

四、双向链表(LinkedList)

双向链表具有如下特点:

  • 链表的节点在内存中的空间是不连续的,每块空间称作一个节点,每个节点都存有一个前驱和后置指针,分别指向前一个节点和后一个节点,因此向链表中添加和删除元素的效果高,只需要更改相应节点的指针指向即可。
  • 链表的查找效率低。查找元素时不能通过下标进行访问,只能从头开始通过地址按顺序查找。

五、堆栈(Stack)

堆栈具有如下特点:

  • 堆栈是先进后出的原则,最先插入的元素最后被访问,最后插入的元素最先被访问。
  • Push入栈,Pop出栈并返回栈顶元素,Peek只返回栈顶元素。

六、Queue(链表)

链表具有以下特点:

  • 链表是先进先出的原则,最先进入的元素最先被访问,最后进入的元素最后被访问。
  • Enqueue入队列,Dequeue出队列并返回列首元素,Peek只返回列首元素。 

七、字典(Dictionary)

字典具有以下特点:

  • 创建字典时需要指定key和value的数据类型。
  • 字典中的key值是唯一的,value的值可以不唯一。
  • 可以通过key快速查找对应的value,速度快,但是消耗内存。

几种常见数据结构的使用情景

Array 需要处理的元素数量确定并且需要使用下标进行访问时可以考虑,不过建议使用List<T>。
ArrayList 不推荐使用,建议使用泛型List<T>。
泛型List<T> 需要处理的元素数量不确定时,通常建议使用。
LiskedList<T> 链表适合元素数量不固定,而且需要经常增减节点的情况,链表增减元素效率高。
Queue<T> 队列适合于先进先出的情况。
Stack<T> 堆栈适合于先进后出的情况。
Dictionary<K,T> 字典适合于需要键值对操作的情况。

到此这篇关于C#数据结构介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/dotnet261010/p/12333598.html

延伸 · 阅读

精彩推荐
  • C#C#数据库操作的用法

    C#数据库操作的用法

    这篇文章主要介绍了C#数据库操作的三种经典用法...

    C#教程网9352021-11-01
  • C#C# web应用程序不能访问app_code下类的原因以及解决方法

    C# web应用程序不能访问app_code下类的原因以及解决方法

    本文主要介绍了C#web应用程序不能访问app_code下类的原因以及解决方法。具有很好的参考价值,下面跟着小编一起来看下吧...

    棉花糖_308102021-12-24
  • C#关于C#操作文件路径(Directory)的常用静态方法详解

    关于C#操作文件路径(Directory)的常用静态方法详解

    这篇文章主要给大家介绍了关于C#操作文件路径(Directory)的常用静态方法,Directory类位于System.IO 命名空间,Directory类提供了在目录和子目录中进行创建移动和列...

    小马的棺材板7662022-11-29
  • C#c#基础——了解程序结构

    c#基础——了解程序结构

    这篇文章主要介绍了c# 程序结构的相关资料,文中讲解非常细致,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下...

    菜鸟教程3582022-09-24
  • C#在C#中global关键字的作用及其用法

    在C#中global关键字的作用及其用法

    global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它,但是不排除一些特别的情况,比如修改别人的代码,本文仅举例说明...

    王景3882021-11-17
  • C#C#接口在派生类和外部类中的调用方法示例

    C#接口在派生类和外部类中的调用方法示例

    这篇文章主要介绍了C#接口在派生类和外部类中的调用方法,结合实例形式分析了C#接口的定义与具体使用方法,需要的朋友可以参考下...

    Mr-Robot10642021-12-24
  • C#Unity绘制二维动态曲线

    Unity绘制二维动态曲线

    这篇文章主要为大家详细介绍了Unity绘制二维动态曲线,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    凯尔八阿哥10972022-07-13
  • C#WPF中窗体最大化问题的解决方法

    WPF中窗体最大化问题的解决方法

    这篇文章主要给大家介绍了关于WPF中窗体最大化问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用wpf具有一定的参考学习价值,需...

    奇葩史10422022-03-02