{"id":159,"date":"2020-05-10T21:59:34","date_gmt":"2020-05-10T13:59:34","guid":{"rendered":"https:\/\/www.blinkedu.cn\/?p=159"},"modified":"2020-05-10T22:03:07","modified_gmt":"2020-05-10T14:03:07","slug":"%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%ef%bc%9a%e5%8d%95%e9%93%be%e8%a1%a8","status":"publish","type":"post","link":"https:\/\/www.blinkedu.cn\/index.php\/2020\/05\/10\/%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%ef%bc%9a%e5%8d%95%e9%93%be%e8%a1%a8\/","title":{"rendered":"\u6570\u636e\u7ed3\u6784\uff1a\u5355\u94fe\u8868"},"content":{"rendered":"<h2>\u5355\u94fe\u8868\u662f\u4ec0\u4e48\uff1f<\/h2>\n<blockquote>\n<p>\n  \u5355\u94fe\u8868\u662f\u4e00\u79cd\u94fe\u5f0f\u5b58\u53d6\u7684\u6570\u636e\u7ed3\u6784\uff0c\u7528\u4e00\u7ec4\u5730\u5740\u4efb\u610f\u7684\u5b58\u50a8\u5355\u5143\u5b58\u653e\u7ebf\u6027\u8868\u4e2d\u7684\u6570\u636e\u5143\u7d20\u3002\u94fe\u8868\u4e2d\u7684\u6570\u636e\u662f\u4ee5\u7ed3\u70b9\u6765\u8868\u793a\u7684\uff0c\u6bcf\u4e2a\u7ed3\u70b9\u7684\u6784\u6210\uff1a\u5143\u7d20(\u6570\u636e\u5143\u7d20\u7684\u6620\u8c61) +\u6307\u9488(\u6307\u793a\u540e\u7ee7\u5143\u7d20\u5b58\u50a8\u4f4d\u7f6e)\uff0c\u5143\u7d20\u5c31\u662f\u5b58\u50a8\u6570\u636e\u7684\u5b58\u50a8\u5355\u5143\uff0c\u6307\u9488\u5c31\u662f\u8fde\u63a5\u6bcf\u4e2a\u7ed3\u70b9\u7684\u5730\u5740\u6570\u636e\u3002\n<\/p>\n<\/blockquote>\n<ul>\n<li>\u903b\u8f91\u7ed3\u6784\u793a\u610f\u56fe<br \/>\n<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_55a5ad871a1f0c91d79a54b3fb6e2a50.jpg\"><img decoding=\"async\" layer-src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_55a5ad871a1f0c91d79a54b3fb6e2a50.jpg\" src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_55a5ad871a1f0c91d79a54b3fb6e2a50.jpg\" alt=\"\u300a\u6570\u636e\u7ed3\u6784\uff1a\u5355\u94fe\u8868\u300b\"><\/a><\/li>\n<li>\n<p>\u8282\u70b9\u7ed3\u6784\u793a\u610f\u56fe<br \/>\n<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_88cfd1e6c0dfebe6288159d1160ea318.jpg\"><img decoding=\"async\" layer-src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_88cfd1e6c0dfebe6288159d1160ea318.jpg\" src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_88cfd1e6c0dfebe6288159d1160ea318.jpg\" alt=\"\u300a\u6570\u636e\u7ed3\u6784\uff1a\u5355\u94fe\u8868\u300b\"><\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u4ee3\u7801\u5b9e\u73b0<\/h2>\n<ul>\n<li>\u5b9a\u4e49\u94fe\u8868\u8282\u70b9\u7c7b<\/li>\n<\/ul>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ &lt;summary&gt;\n\/\/\/ \u94fe\u8868\u8282\u70b9\n\/\/\/ &lt;\/summary&gt;\npublic class ListNode&lt;T&gt;\n{\n    public T data;              \/\/ \u5b58\u50a8\u7684\u6570\u636e\n    public ListNode&lt;T&gt; next;    \/\/ \u4e0b\u4e00\u4e2a\u8282\u70b9\u7684\u5f15\u7528\n\n    public ListNode(){}\n    public ListNode(T data){\n        this.data = data;\n    }\n\n    public ListNode(T data,ListNode&lt;T&gt; next) : this(data){\n        this.next = next;\n    }\n}\n<\/code><\/pre>\n<hr \/>\n<ul>\n<li>\u5b9e\u73b0\u94fe\u8868\u7c7b\uff0c\u5c01\u88c5\u5bf9\u94fe\u8868\u7684\u57fa\u672c\u64cd\u4f5c<\/li>\n<\/ul>\n<pre><code class=\"language-csharp line-numbers\">    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5355\u94fe\u8868\u7c7b\uff08\u5b9e\u73b0\u94fe\u8868\u7684\u4e00\u4e9b\u57fa\u672c\u64cd\u4f5c\uff09\n    \/\/\/ &lt;\/summary&gt;\n    public class SingleLinkedList&lt;T&gt;\n    {\n        public ListNode&lt;T&gt; head = null; \/\/ \u8868\u5934\u8282\u70b9\n        private int count = 0;\n\n        public int Count{\n            get{return count;}\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u6839\u636e\u7d22\u5f15\u83b7\u53d6\u5143\u7d20\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n        \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n        public T Get(int index){\n            if(index &lt; 0 || index &gt;= count) throw new IndexOutOfRangeException(&quot;\u94fe\u8868\u7d22\u5f15\u8d8a\u754c&quot;);\n            if(index == 0) return head.data;\n            return GetPrevNode(index).next.data;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u8bbe\u7f6e\u7d22\u5f15\u4f4d\u7f6e\u4e0a\u7684\u5143\u7d20\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n        \/\/\/ &lt;param name=&quot;newData&quot;&gt;&lt;\/param&gt;\n        public void Set(int index, T newData){\n            if(index &lt; 0 || index &gt;= count) throw new IndexOutOfRangeException(&quot;\u94fe\u8868\u7d22\u5f15\u8d8a\u754c&quot;);\n            if(index == 0) head.data = newData;\n            GetPrevNode(index).next.data = newData;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u6dfb\u52a0\u5230\u94fe\u8868\u5c3e\u90e8\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;data&quot;&gt;&lt;\/param&gt;\n        public void Append(T data){\n            ListNode&lt;T&gt; newNode = new ListNode&lt;T&gt;(data);\n            if(head == null){\n                head = newNode;\n            }else{\n                ListNode&lt;T&gt; tempNode = head;\n                while(tempNode.next != null){\n                    tempNode = tempNode.next;\n                }\n                tempNode.next = newNode;\n            }\n            count++;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u6dfb\u52a0\u5230\u6307\u5b9a\u7684\u7d22\u5f15\u4f4d\u7f6e\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n        \/\/\/ &lt;param name=&quot;data&quot;&gt;&lt;\/param&gt;\n        public void Insert(int index,T data){\n            if(index &lt; 0 || index &gt; count) throw new IndexOutOfRangeException(&quot;\u94fe\u8868\u7d22\u5f15\u8d8a\u754c&quot;);\n            ListNode&lt;T&gt; newNode = new ListNode&lt;T&gt;(data);\n            if(index == 0){\n                newNode.next = head;\n                head = newNode;\n            }else{\n                ListNode&lt;T&gt; prevNode = GetPrevNode(index);\n                 newNode.next = prevNode.next;\n                 prevNode.next = newNode;\n            }\n            count++;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u83b7\u53d6\u5143\u7d20\u6240\u5728\u7684\u7d22\u5f15\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;data&quot;&gt;&lt;\/param&gt;\n        \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n        public int IndexOf(T data){\n            ListNode&lt;T&gt; tempNode = head;\n            for (int i = 0; i &lt; count; i++) {\n                if(tempNode.data.Equals(data))\n                    return i;\n                tempNode = tempNode.next;\n            }\n            return -1;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u79fb\u9664\u5143\u7d20\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;data&quot;&gt;&lt;\/param&gt;\n        public void Remove(T data){\n            int index = IndexOf(data);\n            if(index != -1){\n                RemoveAt(index);\n            }\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u79fb\u9664\u7d22\u5f15\u4f4d\u7f6e\u4e0a\u7684\u5143\u7d20,\u5e76\u8fd4\u56de\u8be5\u5143\u7d20\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n        \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n        public T RemoveAt(int index){\n            if(index &lt; 0 || index &gt;= count) throw new IndexOutOfRangeException(&quot;\u94fe\u8868\u7d22\u5f15\u8d8a\u754c&quot;);\n            T removeData = default(T);\n            if(index == 0){\n                removeData = head.data;\n                head = head.next;\n\n            }else{\n                ListNode&lt;T&gt; prevNode = GetPrevNode(index);\n                ListNode&lt;T&gt; currentNode = prevNode.next;\n                removeData = currentNode.data;\n                prevNode.next = currentNode.next;\n            }\n            count--;\n            return removeData;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u662f\u5426\u4e3a\u7a7a\u94fe\u8868\u8868\n        \/\/\/ &lt;\/summary&gt;\n        public bool IsEmpty{\n            get{return count == 0;}\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u6e05\u7a7a\u94fe\u8868\n        \/\/\/ &lt;\/summary&gt;\n        public void Clear(){\n            head = null;\n            count = 0;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u91cd\u5199ToString\u65b9\u6cd5\uff0c\u65b9\u4fbf\u67e5\u770b\u94fe\u8868\u4fe1\u606f\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n        public override string ToString()\n        {\n            StringBuilder sb = new StringBuilder();\n            sb.AppendFormat(&quot;Count={0}\\n&quot;,count);\n            sb.Append(&quot;[&quot;);\n            for (int i = 0; i &lt; count; i++) {\n                if(i == count - 1)\n                    sb.Append(Get(i).ToString());\n                else\n                    sb.AppendFormat(&quot;{0}, &quot;,Get(i));\n            }\n            sb.Append(&quot;]&quot;);\n            return sb.ToString();\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ \u83b7\u53d6\u7d22\u5f15\u4f4d\u7f6e\u7684\u4e0a\u4e00\u4e2a\u8282\u70b9\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n        \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n        private ListNode&lt;T&gt; GetPrevNode(int index){\n            ListNode&lt;T&gt; tempNode = head;\n            for(int i = 0; i &lt; index - 1; i++){\n                tempNode = tempNode.next;\n            }\n            return tempNode;\n        }\n\n    }\n<\/code><\/pre>\n<h2>\u6d4b\u8bd5<\/h2>\n<pre><code class=\"language-csharp line-numbers\">    class Program\n    {\n        public static void Main(string[] args)\n        {\n            SingleLinkedList&lt;int&gt; list = new SingleLinkedList&lt;int&gt;();\n            for(int i = 0; i &lt; 10; i++){\n                list.Append(i);\n            }\n            Console.WriteLine(list);\n            list.Set(9,100);\n            Console.WriteLine(list);\n            list.RemoveAt(9);\n            list.RemoveAt(7);\n            list.Insert(3,99);\n            Console.WriteLine(list);\n            list.Remove(99);\n            Console.WriteLine(list);\n            Console.ReadKey(true);\n        }\n    }\n<\/code><\/pre>\n<hr \/>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_a4cab1457f0c9bc84b64dc5cb4e7eaf9.jpg\"><img decoding=\"async\" layer-src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_a4cab1457f0c9bc84b64dc5cb4e7eaf9.jpg\" src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_a4cab1457f0c9bc84b64dc5cb4e7eaf9.jpg\" alt=\"\u300a\u6570\u636e\u7ed3\u6784\uff1a\u5355\u94fe\u8868\u300b\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5355\u94fe\u8868\u662f\u4ec0\u4e48\uff1f \u5355\u94fe\u8868\u662f\u4e00\u79cd\u94fe\u5f0f\u5b58\u53d6\u7684\u6570\u636e\u7ed3\u6784\uff0c\u7528\u4e00\u7ec4\u5730\u5740\u4efb\u610f\u7684\u5b58\u50a8\u5355\u5143\u5b58\u653e\u7ebf\u6027\u8868\u4e2d\u7684\u6570\u636e\u5143\u7d20\u3002\u94fe\u8868\u4e2d\u7684\u6570\u636e\u662f\u4ee5\u7ed3\u70b9\u6765\u8868\u793a\u7684\uff0c\u6bcf\u4e2a\u7ed3\u70b9\u7684\u6784\u6210\uff1a\u5143\u7d20(\u6570\u636e\u5143\u7d20\u7684\u6620\u8c61) +\u6307\u9488(\u6307\u793a\u540e\u7ee7\u5143\u7d20\u5b58\u50a8\u4f4d\u7f6e)\uff0c\u5143\u7d20\u5c31\u662f\u5b58\u50a8\u6570\u636e\u7684\u5b58\u50a8\u5355\u5143\uff0c\u6307\u9488\u5c31\u662f\u8fde\u63a5\u6bcf\u4e2a\u7ed3\u70b9\u7684\u5730\u5740\u6570\u636e\u3002 \u903b\u8f91\u7ed3\u6784\u793a\u610f\u56fe \u8282\u70b9\u7ed3\u6784\u793a\u610f\u56fe \u4ee3\u7801\u5b9e\u73b0 \u5b9a\u4e49\u94fe\u8868\u8282\u70b9\u7c7b \/\/\/ <sum\u2026\u2026<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-159","post","type-post","status-publish","format-standard","hentry","category-17"],"_links":{"self":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/159"}],"collection":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/comments?post=159"}],"version-history":[{"count":1,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/159\/revisions"}],"predecessor-version":[{"id":160,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/159\/revisions\/160"}],"wp:attachment":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/media?parent=159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/categories?post=159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/tags?post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}