查看: 914|回复: 0
打印 上一主题 下一主题

[其他] C#之LinkedList使用以及常用容器类

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2018-8-23 20:41:50 |只看该作者 |倒序浏览

LinkedList是很好用的一个工具,可以方便做出前后关系
  1. using System;
  2. using System.Collections.Generic;

  3. namespace ConsoleApplication
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             LinkedList<int> a = new LinkedList<int>();
  10.             a.AddFirst(3);
  11.             a.AddLast(1);
  12.             a.AddLast(4);

  13.             foreach (int i in a)
  14.                 Console.Write(i + " ");
  15.             Console.WriteLine();

  16.             LinkedListNode<int> cur = a.Find(3);  //cur对应3所在的位置
  17.             a.AddBefore(cur, 2);                //在3前面添加2

  18.             foreach (int i in a)
  19.                 Console.Write(i + " ");

  20.             a.Remove(3);
  21.             a.Clear();
  22.             Console.Read();
  23.         }      
  24.     }
  25. }
复制代码
插入:O(1) (在头尾部),O(N) (在其他位置)
删除:O(1) (在头尾部),O(N) (在其他位置)
按照索引器访问:没有索引器(因为没有实现IList<T>
查找:O(N)

除此之外,还有SortedList<K,T>和SortedDictionary<K,T>这两个,是用于排序频繁发生的时候,排序成本O(ln(N))
一些可能会用到的容器类:
线性表和链表(使用最多的对象):

  • Array (T[]):当元素的数量是固定的,并且需要使用索引器时。
  • Linked list (LinkedList<T>):当元素的数量不是固定的,且存在大量列表的头尾添加的动作时。否则使用 List<T>。
  • Resizable array list (List<T>):当元素的数量不是固定的,并且需要使用索引器时。
栈和队列(只有在模拟栈和队列时才考虑):
  • Stack (Stack<T>):当需要实现 LIFO(Last In First Out)时。
  • Queue (Queue<T>):当需要实现 FIFO(First In First Out)时。
哈希(需要大规模查找):
  • Hash table (Dictionary<K,T>):当需要使用键值对(Key-Value)来快速添加和查找,并且元素没有特定的顺序时。有了泛型版本的字典,我们几乎永远不需要使用非泛型的HashTable
  • Tree-based dictionary (SortedDictionary<K,T>):当需要使用键值对(Key-Value)来快速添加和查找,并且元素总是需要根据 Key 来排序时。
集合(保存一组唯一的值/模拟集合运算):
  • Hash table based set (HashSet<T>):当需要保存一组唯一的值,并且元素没有特定顺序时。
  • Tree based set (SortedSet<T>):当需要保存一组唯一的值,并且元素总是需要排序时。

來自:cony138

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-2-12 04:40 , Processed in 0.085992 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部