連結串列方便於增和刪
連結串列的增和插入
因為連結串列沒有下標所以增的話需要一個類似於標籤的node來指示!
程式碼一:(建構函式,初始化)
1 namespace 連結串列 2 { 3 public class Node 4 { 5 public int Data; 6 //這個就是地址 7 public Node Next; 8 // 建構函式目的就是初始化 9 public Node() 10 { 11 Data = default(int); 12 Next = null; 13 } 14 public Node(int value) 15 { 16 Data = value; 17 Next = null; 18 } 19 } 20 }
程式碼二:(主要的實現方法!!!重點)
1 using System; 2 namespace 連結串列 3 { 4 //連結串列都是有頭部節點的 簡稱為頭結點 頭結點不參與運算 5 public class LinkList 6 { 7 private Node _head; 8 private int _count; 9 public LinkList() 10 { 11 _head = new Node(); 12 _count = 0; 13 } 14 public void AddItem(Node newNode) 15 { 16 //找到頭結點 17 Node tmpNode = _head; 18 //迴圈找到最後結點 19 while (tmpNode.Next != null) 20 { 21 //一直下移 22 tmpNode = tmpNode.Next; 23 } 24 //將最後結點和即將插入的結點連結 25 tmpNode.Next = newNode; 26 //個數++ 27 _count++; 28 } 29 public int GetLength() 30 { 31 return _count; 32 } 33 public void Insert(int index, Node newNode) 34 { 35 if (index < 0 || index > _count) 36 { 37 Console.WriteLine("Over"); 38 return; 39 } 40 Node tmpNode = _head; 41 for (int i = 0; i < index; i++) 42 { 43 tmpNode = tmpNode.Next; 44 } 45 newNode.Next = tmpNode.Next; 46 tmpNode.Next = newNode; 47 _count++; 48 } 49 } 50 }
程式碼三:(實現)
1 using System; 2 namespace 連結串列 3 { 4 internal class Program 5 { 6 public static void Main(string[] args) 7 { 8 LinkList linkList = new LinkList(); 9 linkList.AddItem(new Node(1)); 10 linkList.AddItem(new Node(2)); 11 linkList.AddItem(new Node(3)); 12 linkList.AddItem(new Node(4)); 13 linkList.AddItem(new Node(5)); 14 linkList.Insert(1,new Node(1000)); 15 Console.WriteLine(linkList.GetLength()); 16 Console.Read(); 17 } 18 } 19 }
輸出:6
linklist包含的元素為(1,1000,2,3,4,5)