【优缺点】
数组:查询方便,但增删难,空间利用率不高
链表:增删简单,空间利用率高,但查询难
哈希表:都挺简单(结合产物)
【不同点】
1、数组空间连续,链表空间发散
2、数组需要预留空间,提前申请,链表不需要,链表需要值和下一个元素的地址
3、数组空间利用率不高,链表比较高,因为是动态申请
4、数组空间是栈分配(先进后出),链表是堆分配(先进先出)
5、数组可以通过索引取值,链表不行,哈希表可以通过键取值
【声明】
//数组 int[] arr=new int[5]; string[] strs=new string[]{"123","234"}; //链表 LinkedList<int> links=new LinkedList<int>(); //哈希表 Hashtable ht=new Hashtable();
【增删与遍历】
//数组 arr[3]=6; for(int i=0;i<arr.Length;i++) //链表 links.AddFirst(123); links.AddLast(456); LinkedListNode<int> node123 = linkedList.Find(123); linkedList.AddBefore(node123, 213);//在指定节点前新增元素 linkedList.AddAfter(node123, 9);//在指定节点后新增元素 links.Remove(123); links.RemoveFirst(); links.RemoveLast(); links.Clear(); //哈希表 ht.Add("code1",123); ht.Remove("code1"); ht.Clear(); ICollection key = ht.Keys; //遍历 foreach (string k in key) { Console.WriteLine(k + ": " + ht[k]); }