資料結構—-連結串列的增和插入(2018/10/23)

薄荷グ微涼べ發表於2018-10-23

連結串列方便於增和刪

連結串列的增和插入

因為連結串列沒有下標所以增的話需要一個類似於標籤的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)

相關文章