C#——数据结构(一)

1.Array数组

数组可以直接通过下标访问。 array[i]

常规操作:

分配存储空间。 如:声明一个数组 int[] array = new int[5];
访问数组中的元素数据。 通过下标来获取。
int[ ] array = new int [5] {1,2,3,4,5};
int[ , ] secDimeArray = new int[2,3];
int[ ] [ ] jaggedArray = new int[6] [ ];
这种数组索引速度非常快,访问一个元素的时间是恒定的O(1)。
但是由于连续存储,插入新的元素不方便;


2.ArrayList数组

System.Collections 下;

  • 不必声明ArrayList的时候指定长度。 ArrayList对象的长度按照存储数据来动态增长与缩减。
  • 可以存不同类型的元素。ArrayList把元素都当Object来处理
    这里写图片描述
    正是这种可以存不同类型的功能,会使程序不安全,造成频繁的装箱拆箱,性能下降;

3.List<> 泛型集合

List<> 是ArrayList类的泛型等效类,但不同在于 声明时,需要声明数据的对象类型,不需要指定长度。
这里写图片描述
优点:

  • 确保了类型安全;
  • 取消了拆箱和装箱的操作,由于是泛型而无需运行时检查类型;提高了性能
  • 融合了Array可以快速访问的优点,ArrayList长度灵活的优点。

4.链表 LinkedList

(1)单链表

这里写图片描述
坏:链表查找麻烦,需要从头节点开始,直到找到所需结点;
好:插入或删除节点时,不需要考虑容量问题;在有顺序的链表中,插入时间为O(1),反之为O(n),需要从开始遍历;
——Insert:
要插入的元素先发起Link,再接受链表的Link;
这里写图片描述
——Remove:
link直接变化即可;
这里写图片描述

(2)双向链表

——Insert
这里写图片描述
——Remove
这里写图片描述

猜你喜欢

转载自blog.csdn.net/noEnoughChief/article/details/82290065