This commit is contained in:
krahets
2023-04-17 21:57:50 +08:00
parent cc58db2cfa
commit 408bc90d95
22 changed files with 943 additions and 894 deletions

View File

@@ -2314,13 +2314,12 @@
<div class="tabbed-block">
<div class="highlight"><span class="filename">linked_list.js</span><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="cm">/* 删除链表的节点 n0 之后的首个节点 */</span>
<a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">n0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">n0</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span>
<a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a><span class="w"> </span><span class="c1">// n0 -&gt; P -&gt; n1</span>
<a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">P</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n0</span><span class="p">.</span><span class="nx">next</span><span class="p">;</span>
<a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">P</span><span class="p">.</span><span class="nx">next</span><span class="p">;</span>
<a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a><span class="w"> </span><span class="nx">n0</span><span class="p">.</span><span class="nx">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n1</span><span class="p">;</span>
<a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a><span class="p">}</span>
<a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">n0</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a><span class="w"> </span><span class="c1">// n0 -&gt; P -&gt; n1</span>
<a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">P</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n0</span><span class="p">.</span><span class="nx">next</span><span class="p">;</span>
<a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">P</span><span class="p">.</span><span class="nx">next</span><span class="p">;</span>
<a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a><span class="w"> </span><span class="nx">n0</span><span class="p">.</span><span class="nx">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n1</span><span class="p">;</span>
<a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">

View File

@@ -2858,82 +2858,78 @@
<a id="__codelineno-64-23" name="__codelineno-64-23" href="#__codelineno-64-23"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-64-24" name="__codelineno-64-24" href="#__codelineno-64-24"></a><span class="w"> </span><span class="nx">get</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-25" name="__codelineno-64-25" href="#__codelineno-64-25"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-64-26" name="__codelineno-64-26" href="#__codelineno-64-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span>
<a id="__codelineno-64-27" name="__codelineno-64-27" href="#__codelineno-64-27"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-28" name="__codelineno-64-28" href="#__codelineno-64-28"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-64-29" name="__codelineno-64-29" href="#__codelineno-64-29"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-30" name="__codelineno-64-30" href="#__codelineno-64-30"></a>
<a id="__codelineno-64-31" name="__codelineno-64-31" href="#__codelineno-64-31"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-64-32" name="__codelineno-64-32" href="#__codelineno-64-32"></a><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-33" name="__codelineno-64-33" href="#__codelineno-64-33"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span>
<a id="__codelineno-64-34" name="__codelineno-64-34" href="#__codelineno-64-34"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-35" name="__codelineno-64-35" href="#__codelineno-64-35"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-36" name="__codelineno-64-36" href="#__codelineno-64-36"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-37" name="__codelineno-64-37" href="#__codelineno-64-37"></a>
<a id="__codelineno-64-38" name="__codelineno-64-38" href="#__codelineno-64-38"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-64-39" name="__codelineno-64-39" href="#__codelineno-64-39"></a><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-40" name="__codelineno-64-40" href="#__codelineno-64-40"></a><span class="w"> </span><span class="c1">// 如果长度等于容量,则需要扩容</span>
<a id="__codelineno-64-41" name="__codelineno-64-41" href="#__codelineno-64-41"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-42" name="__codelineno-64-42" href="#__codelineno-64-42"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-64-43" name="__codelineno-64-43" href="#__codelineno-64-43"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-44" name="__codelineno-64-44" href="#__codelineno-64-44"></a><span class="w"> </span><span class="c1">// 将新元素添加到列表尾部</span>
<a id="__codelineno-64-45" name="__codelineno-64-45" href="#__codelineno-64-45"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-46" name="__codelineno-64-46" href="#__codelineno-64-46"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-64-47" name="__codelineno-64-47" href="#__codelineno-64-47"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-48" name="__codelineno-64-48" href="#__codelineno-64-48"></a>
<a id="__codelineno-64-49" name="__codelineno-64-49" href="#__codelineno-64-49"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-64-50" name="__codelineno-64-50" href="#__codelineno-64-50"></a><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-51" name="__codelineno-64-51" href="#__codelineno-64-51"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span>
<a id="__codelineno-64-52" name="__codelineno-64-52" href="#__codelineno-64-52"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-53" name="__codelineno-64-53" href="#__codelineno-64-53"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-64-54" name="__codelineno-64-54" href="#__codelineno-64-54"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-55" name="__codelineno-64-55" href="#__codelineno-64-55"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-64-56" name="__codelineno-64-56" href="#__codelineno-64-56"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-57" name="__codelineno-64-57" href="#__codelineno-64-57"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-64-58" name="__codelineno-64-58" href="#__codelineno-64-58"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-59" name="__codelineno-64-59" href="#__codelineno-64-59"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<a id="__codelineno-64-60" name="__codelineno-64-60" href="#__codelineno-64-60"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-61" name="__codelineno-64-61" href="#__codelineno-64-61"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-64-62" name="__codelineno-64-62" href="#__codelineno-64-62"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-63" name="__codelineno-64-63" href="#__codelineno-64-63"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-64-64" name="__codelineno-64-64" href="#__codelineno-64-64"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-65" name="__codelineno-64-65" href="#__codelineno-64-65"></a>
<a id="__codelineno-64-66" name="__codelineno-64-66" href="#__codelineno-64-66"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-64-67" name="__codelineno-64-67" href="#__codelineno-64-67"></a><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-68" name="__codelineno-64-68" href="#__codelineno-64-68"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span>
<a id="__codelineno-64-69" name="__codelineno-64-69" href="#__codelineno-64-69"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-70" name="__codelineno-64-70" href="#__codelineno-64-70"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-64-71" name="__codelineno-64-71" href="#__codelineno-64-71"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-64-72" name="__codelineno-64-72" href="#__codelineno-64-72"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-73" name="__codelineno-64-73" href="#__codelineno-64-73"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
<a id="__codelineno-64-74" name="__codelineno-64-74" href="#__codelineno-64-74"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-75" name="__codelineno-64-75" href="#__codelineno-64-75"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-64-76" name="__codelineno-64-76" href="#__codelineno-64-76"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-64-77" name="__codelineno-64-77" href="#__codelineno-64-77"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-64-78" name="__codelineno-64-78" href="#__codelineno-64-78"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-79" name="__codelineno-64-79" href="#__codelineno-64-79"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-80" name="__codelineno-64-80" href="#__codelineno-64-80"></a>
<a id="__codelineno-64-81" name="__codelineno-64-81" href="#__codelineno-64-81"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-64-82" name="__codelineno-64-82" href="#__codelineno-64-82"></a><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-83" name="__codelineno-64-83" href="#__codelineno-64-83"></a><span class="w"> </span><span class="c1">// 新建一个长度为 size 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-64-84" name="__codelineno-64-84" href="#__codelineno-64-84"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span>
<a id="__codelineno-64-85" name="__codelineno-64-85" href="#__codelineno-64-85"></a><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">))</span>
<a id="__codelineno-64-86" name="__codelineno-64-86" href="#__codelineno-64-86"></a><span class="w"> </span><span class="p">);</span>
<a id="__codelineno-64-87" name="__codelineno-64-87" href="#__codelineno-64-87"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-64-88" name="__codelineno-64-88" href="#__codelineno-64-88"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<a id="__codelineno-64-89" name="__codelineno-64-89" href="#__codelineno-64-89"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-90" name="__codelineno-64-90" href="#__codelineno-64-90"></a>
<a id="__codelineno-64-91" name="__codelineno-64-91" href="#__codelineno-64-91"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-64-92" name="__codelineno-64-92" href="#__codelineno-64-92"></a><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-93" name="__codelineno-64-93" href="#__codelineno-64-93"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">size</span><span class="p">();</span>
<a id="__codelineno-64-94" name="__codelineno-64-94" href="#__codelineno-64-94"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-64-95" name="__codelineno-64-95" href="#__codelineno-64-95"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">size</span><span class="p">);</span>
<a id="__codelineno-64-96" name="__codelineno-64-96" href="#__codelineno-64-96"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-97" name="__codelineno-64-97" href="#__codelineno-64-97"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<a id="__codelineno-64-98" name="__codelineno-64-98" href="#__codelineno-64-98"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-99" name="__codelineno-64-99" href="#__codelineno-64-99"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
<a id="__codelineno-64-100" name="__codelineno-64-100" href="#__codelineno-64-100"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-101" name="__codelineno-64-101" href="#__codelineno-64-101"></a><span class="p">}</span>
<a id="__codelineno-64-26" name="__codelineno-64-26" href="#__codelineno-64-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-27" name="__codelineno-64-27" href="#__codelineno-64-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-64-28" name="__codelineno-64-28" href="#__codelineno-64-28"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-29" name="__codelineno-64-29" href="#__codelineno-64-29"></a>
<a id="__codelineno-64-30" name="__codelineno-64-30" href="#__codelineno-64-30"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-64-31" name="__codelineno-64-31" href="#__codelineno-64-31"></a><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-32" name="__codelineno-64-32" href="#__codelineno-64-32"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-33" name="__codelineno-64-33" href="#__codelineno-64-33"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-34" name="__codelineno-64-34" href="#__codelineno-64-34"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-35" name="__codelineno-64-35" href="#__codelineno-64-35"></a>
<a id="__codelineno-64-36" name="__codelineno-64-36" href="#__codelineno-64-36"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-64-37" name="__codelineno-64-37" href="#__codelineno-64-37"></a><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-38" name="__codelineno-64-38" href="#__codelineno-64-38"></a><span class="w"> </span><span class="c1">// 如果长度等于容量,则需要扩容</span>
<a id="__codelineno-64-39" name="__codelineno-64-39" href="#__codelineno-64-39"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-40" name="__codelineno-64-40" href="#__codelineno-64-40"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-64-41" name="__codelineno-64-41" href="#__codelineno-64-41"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-42" name="__codelineno-64-42" href="#__codelineno-64-42"></a><span class="w"> </span><span class="c1">// 将新元素添加到列表尾部</span>
<a id="__codelineno-64-43" name="__codelineno-64-43" href="#__codelineno-64-43"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-44" name="__codelineno-64-44" href="#__codelineno-64-44"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-64-45" name="__codelineno-64-45" href="#__codelineno-64-45"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-46" name="__codelineno-64-46" href="#__codelineno-64-46"></a>
<a id="__codelineno-64-47" name="__codelineno-64-47" href="#__codelineno-64-47"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-64-48" name="__codelineno-64-48" href="#__codelineno-64-48"></a><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-49" name="__codelineno-64-49" href="#__codelineno-64-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-50" name="__codelineno-64-50" href="#__codelineno-64-50"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-64-51" name="__codelineno-64-51" href="#__codelineno-64-51"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-52" name="__codelineno-64-52" href="#__codelineno-64-52"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-64-53" name="__codelineno-64-53" href="#__codelineno-64-53"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-54" name="__codelineno-64-54" href="#__codelineno-64-54"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-64-55" name="__codelineno-64-55" href="#__codelineno-64-55"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-56" name="__codelineno-64-56" href="#__codelineno-64-56"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<a id="__codelineno-64-57" name="__codelineno-64-57" href="#__codelineno-64-57"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-58" name="__codelineno-64-58" href="#__codelineno-64-58"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-64-59" name="__codelineno-64-59" href="#__codelineno-64-59"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-60" name="__codelineno-64-60" href="#__codelineno-64-60"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-64-61" name="__codelineno-64-61" href="#__codelineno-64-61"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-62" name="__codelineno-64-62" href="#__codelineno-64-62"></a>
<a id="__codelineno-64-63" name="__codelineno-64-63" href="#__codelineno-64-63"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-64-64" name="__codelineno-64-64" href="#__codelineno-64-64"></a><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-65" name="__codelineno-64-65" href="#__codelineno-64-65"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-64-66" name="__codelineno-64-66" href="#__codelineno-64-66"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-64-67" name="__codelineno-64-67" href="#__codelineno-64-67"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-64-68" name="__codelineno-64-68" href="#__codelineno-64-68"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-69" name="__codelineno-64-69" href="#__codelineno-64-69"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
<a id="__codelineno-64-70" name="__codelineno-64-70" href="#__codelineno-64-70"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-71" name="__codelineno-64-71" href="#__codelineno-64-71"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-64-72" name="__codelineno-64-72" href="#__codelineno-64-72"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-64-73" name="__codelineno-64-73" href="#__codelineno-64-73"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-64-74" name="__codelineno-64-74" href="#__codelineno-64-74"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-64-75" name="__codelineno-64-75" href="#__codelineno-64-75"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-76" name="__codelineno-64-76" href="#__codelineno-64-76"></a>
<a id="__codelineno-64-77" name="__codelineno-64-77" href="#__codelineno-64-77"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-64-78" name="__codelineno-64-78" href="#__codelineno-64-78"></a><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-79" name="__codelineno-64-79" href="#__codelineno-64-79"></a><span class="w"> </span><span class="c1">// 新建一个长度为 size 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-64-80" name="__codelineno-64-80" href="#__codelineno-64-80"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span>
<a id="__codelineno-64-81" name="__codelineno-64-81" href="#__codelineno-64-81"></a><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">))</span>
<a id="__codelineno-64-82" name="__codelineno-64-82" href="#__codelineno-64-82"></a><span class="w"> </span><span class="p">);</span>
<a id="__codelineno-64-83" name="__codelineno-64-83" href="#__codelineno-64-83"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-64-84" name="__codelineno-64-84" href="#__codelineno-64-84"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<a id="__codelineno-64-85" name="__codelineno-64-85" href="#__codelineno-64-85"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-86" name="__codelineno-64-86" href="#__codelineno-64-86"></a>
<a id="__codelineno-64-87" name="__codelineno-64-87" href="#__codelineno-64-87"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-64-88" name="__codelineno-64-88" href="#__codelineno-64-88"></a><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-89" name="__codelineno-64-89" href="#__codelineno-64-89"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">size</span><span class="p">();</span>
<a id="__codelineno-64-90" name="__codelineno-64-90" href="#__codelineno-64-90"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-64-91" name="__codelineno-64-91" href="#__codelineno-64-91"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">size</span><span class="p">);</span>
<a id="__codelineno-64-92" name="__codelineno-64-92" href="#__codelineno-64-92"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-64-93" name="__codelineno-64-93" href="#__codelineno-64-93"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<a id="__codelineno-64-94" name="__codelineno-64-94" href="#__codelineno-64-94"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-95" name="__codelineno-64-95" href="#__codelineno-64-95"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
<a id="__codelineno-64-96" name="__codelineno-64-96" href="#__codelineno-64-96"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-64-97" name="__codelineno-64-97" href="#__codelineno-64-97"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
@@ -2962,81 +2958,76 @@
<a id="__codelineno-65-23" name="__codelineno-65-23" href="#__codelineno-65-23"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-65-24" name="__codelineno-65-24" href="#__codelineno-65-24"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">get</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-25" name="__codelineno-65-25" href="#__codelineno-65-25"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-65-26" name="__codelineno-65-26" href="#__codelineno-65-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span>
<a id="__codelineno-65-27" name="__codelineno-65-27" href="#__codelineno-65-27"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-28" name="__codelineno-65-28" href="#__codelineno-65-28"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-65-29" name="__codelineno-65-29" href="#__codelineno-65-29"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-30" name="__codelineno-65-30" href="#__codelineno-65-30"></a>
<a id="__codelineno-65-31" name="__codelineno-65-31" href="#__codelineno-65-31"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-65-32" name="__codelineno-65-32" href="#__codelineno-65-32"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-33" name="__codelineno-65-33" href="#__codelineno-65-33"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span>
<a id="__codelineno-65-34" name="__codelineno-65-34" href="#__codelineno-65-34"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-35" name="__codelineno-65-35" href="#__codelineno-65-35"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-36" name="__codelineno-65-36" href="#__codelineno-65-36"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-37" name="__codelineno-65-37" href="#__codelineno-65-37"></a>
<a id="__codelineno-65-38" name="__codelineno-65-38" href="#__codelineno-65-38"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-65-39" name="__codelineno-65-39" href="#__codelineno-65-39"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-40" name="__codelineno-65-40" href="#__codelineno-65-40"></a><span class="w"> </span><span class="c1">// 如果长度等于容量,则需要扩容</span>
<a id="__codelineno-65-41" name="__codelineno-65-41" href="#__codelineno-65-41"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">)</span>
<a id="__codelineno-65-42" name="__codelineno-65-42" href="#__codelineno-65-42"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-65-43" name="__codelineno-65-43" href="#__codelineno-65-43"></a><span class="w"> </span><span class="c1">// 将新元素添加到列表尾部</span>
<a id="__codelineno-65-44" name="__codelineno-65-44" href="#__codelineno-65-44"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-45" name="__codelineno-65-45" href="#__codelineno-65-45"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-65-46" name="__codelineno-65-46" href="#__codelineno-65-46"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-47" name="__codelineno-65-47" href="#__codelineno-65-47"></a>
<a id="__codelineno-65-48" name="__codelineno-65-48" href="#__codelineno-65-48"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-65-49" name="__codelineno-65-49" href="#__codelineno-65-49"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-50" name="__codelineno-65-50" href="#__codelineno-65-50"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span>
<a id="__codelineno-65-51" name="__codelineno-65-51" href="#__codelineno-65-51"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-52" name="__codelineno-65-52" href="#__codelineno-65-52"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-65-53" name="__codelineno-65-53" href="#__codelineno-65-53"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-54" name="__codelineno-65-54" href="#__codelineno-65-54"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-65-26" name="__codelineno-65-26" href="#__codelineno-65-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-27" name="__codelineno-65-27" href="#__codelineno-65-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-65-28" name="__codelineno-65-28" href="#__codelineno-65-28"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-29" name="__codelineno-65-29" href="#__codelineno-65-29"></a>
<a id="__codelineno-65-30" name="__codelineno-65-30" href="#__codelineno-65-30"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-65-31" name="__codelineno-65-31" href="#__codelineno-65-31"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-32" name="__codelineno-65-32" href="#__codelineno-65-32"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-33" name="__codelineno-65-33" href="#__codelineno-65-33"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-34" name="__codelineno-65-34" href="#__codelineno-65-34"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-35" name="__codelineno-65-35" href="#__codelineno-65-35"></a>
<a id="__codelineno-65-36" name="__codelineno-65-36" href="#__codelineno-65-36"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-65-37" name="__codelineno-65-37" href="#__codelineno-65-37"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-38" name="__codelineno-65-38" href="#__codelineno-65-38"></a><span class="w"> </span><span class="c1">// 如果长度等于容量,则需要扩容</span>
<a id="__codelineno-65-39" name="__codelineno-65-39" href="#__codelineno-65-39"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-65-40" name="__codelineno-65-40" href="#__codelineno-65-40"></a><span class="w"> </span><span class="c1">// 将新元素添加到列表尾部</span>
<a id="__codelineno-65-41" name="__codelineno-65-41" href="#__codelineno-65-41"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-42" name="__codelineno-65-42" href="#__codelineno-65-42"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-65-43" name="__codelineno-65-43" href="#__codelineno-65-43"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-44" name="__codelineno-65-44" href="#__codelineno-65-44"></a>
<a id="__codelineno-65-45" name="__codelineno-65-45" href="#__codelineno-65-45"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-65-46" name="__codelineno-65-46" href="#__codelineno-65-46"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-47" name="__codelineno-65-47" href="#__codelineno-65-47"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-48" name="__codelineno-65-48" href="#__codelineno-65-48"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-65-49" name="__codelineno-65-49" href="#__codelineno-65-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-50" name="__codelineno-65-50" href="#__codelineno-65-50"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-65-51" name="__codelineno-65-51" href="#__codelineno-65-51"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-52" name="__codelineno-65-52" href="#__codelineno-65-52"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-65-53" name="__codelineno-65-53" href="#__codelineno-65-53"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-54" name="__codelineno-65-54" href="#__codelineno-65-54"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<a id="__codelineno-65-55" name="__codelineno-65-55" href="#__codelineno-65-55"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-56" name="__codelineno-65-56" href="#__codelineno-65-56"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-65-57" name="__codelineno-65-57" href="#__codelineno-65-57"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-58" name="__codelineno-65-58" href="#__codelineno-65-58"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<a id="__codelineno-65-59" name="__codelineno-65-59" href="#__codelineno-65-59"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-60" name="__codelineno-65-60" href="#__codelineno-65-60"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-65-61" name="__codelineno-65-61" href="#__codelineno-65-61"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-62" name="__codelineno-65-62" href="#__codelineno-65-62"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-65-63" name="__codelineno-65-63" href="#__codelineno-65-63"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-64" name="__codelineno-65-64" href="#__codelineno-65-64"></a>
<a id="__codelineno-65-65" name="__codelineno-65-65" href="#__codelineno-65-65"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-65-66" name="__codelineno-65-66" href="#__codelineno-65-66"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-67" name="__codelineno-65-67" href="#__codelineno-65-67"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span>
<a id="__codelineno-65-68" name="__codelineno-65-68" href="#__codelineno-65-68"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-69" name="__codelineno-65-69" href="#__codelineno-65-69"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-65-70" name="__codelineno-65-70" href="#__codelineno-65-70"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-65-71" name="__codelineno-65-71" href="#__codelineno-65-71"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-72" name="__codelineno-65-72" href="#__codelineno-65-72"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
<a id="__codelineno-65-73" name="__codelineno-65-73" href="#__codelineno-65-73"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-74" name="__codelineno-65-74" href="#__codelineno-65-74"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-65-75" name="__codelineno-65-75" href="#__codelineno-65-75"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-65-76" name="__codelineno-65-76" href="#__codelineno-65-76"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-65-77" name="__codelineno-65-77" href="#__codelineno-65-77"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-78" name="__codelineno-65-78" href="#__codelineno-65-78"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-79" name="__codelineno-65-79" href="#__codelineno-65-79"></a>
<a id="__codelineno-65-80" name="__codelineno-65-80" href="#__codelineno-65-80"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-65-81" name="__codelineno-65-81" href="#__codelineno-65-81"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-82" name="__codelineno-65-82" href="#__codelineno-65-82"></a><span class="w"> </span><span class="c1">// 新建一个长度为 size 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-65-83" name="__codelineno-65-83" href="#__codelineno-65-83"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span>
<a id="__codelineno-65-84" name="__codelineno-65-84" href="#__codelineno-65-84"></a><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">))</span>
<a id="__codelineno-65-85" name="__codelineno-65-85" href="#__codelineno-65-85"></a><span class="w"> </span><span class="p">);</span>
<a id="__codelineno-65-86" name="__codelineno-65-86" href="#__codelineno-65-86"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-65-87" name="__codelineno-65-87" href="#__codelineno-65-87"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<a id="__codelineno-65-88" name="__codelineno-65-88" href="#__codelineno-65-88"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-89" name="__codelineno-65-89" href="#__codelineno-65-89"></a>
<a id="__codelineno-65-90" name="__codelineno-65-90" href="#__codelineno-65-90"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-65-91" name="__codelineno-65-91" href="#__codelineno-65-91"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-92" name="__codelineno-65-92" href="#__codelineno-65-92"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">size</span><span class="p">();</span>
<a id="__codelineno-65-93" name="__codelineno-65-93" href="#__codelineno-65-93"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-65-94" name="__codelineno-65-94" href="#__codelineno-65-94"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">size</span><span class="p">);</span>
<a id="__codelineno-65-95" name="__codelineno-65-95" href="#__codelineno-65-95"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-96" name="__codelineno-65-96" href="#__codelineno-65-96"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<a id="__codelineno-65-97" name="__codelineno-65-97" href="#__codelineno-65-97"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-98" name="__codelineno-65-98" href="#__codelineno-65-98"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
<a id="__codelineno-65-99" name="__codelineno-65-99" href="#__codelineno-65-99"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-100" name="__codelineno-65-100" href="#__codelineno-65-100"></a><span class="p">}</span>
<a id="__codelineno-65-56" name="__codelineno-65-56" href="#__codelineno-65-56"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-65-57" name="__codelineno-65-57" href="#__codelineno-65-57"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-58" name="__codelineno-65-58" href="#__codelineno-65-58"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-65-59" name="__codelineno-65-59" href="#__codelineno-65-59"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-60" name="__codelineno-65-60" href="#__codelineno-65-60"></a>
<a id="__codelineno-65-61" name="__codelineno-65-61" href="#__codelineno-65-61"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-65-62" name="__codelineno-65-62" href="#__codelineno-65-62"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-63" name="__codelineno-65-63" href="#__codelineno-65-63"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-65-64" name="__codelineno-65-64" href="#__codelineno-65-64"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-65-65" name="__codelineno-65-65" href="#__codelineno-65-65"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-65-66" name="__codelineno-65-66" href="#__codelineno-65-66"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-67" name="__codelineno-65-67" href="#__codelineno-65-67"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
<a id="__codelineno-65-68" name="__codelineno-65-68" href="#__codelineno-65-68"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-69" name="__codelineno-65-69" href="#__codelineno-65-69"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-65-70" name="__codelineno-65-70" href="#__codelineno-65-70"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-65-71" name="__codelineno-65-71" href="#__codelineno-65-71"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-65-72" name="__codelineno-65-72" href="#__codelineno-65-72"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-65-73" name="__codelineno-65-73" href="#__codelineno-65-73"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-74" name="__codelineno-65-74" href="#__codelineno-65-74"></a>
<a id="__codelineno-65-75" name="__codelineno-65-75" href="#__codelineno-65-75"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-65-76" name="__codelineno-65-76" href="#__codelineno-65-76"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-77" name="__codelineno-65-77" href="#__codelineno-65-77"></a><span class="w"> </span><span class="c1">// 新建一个长度为 size 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-65-78" name="__codelineno-65-78" href="#__codelineno-65-78"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span>
<a id="__codelineno-65-79" name="__codelineno-65-79" href="#__codelineno-65-79"></a><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">))</span>
<a id="__codelineno-65-80" name="__codelineno-65-80" href="#__codelineno-65-80"></a><span class="w"> </span><span class="p">);</span>
<a id="__codelineno-65-81" name="__codelineno-65-81" href="#__codelineno-65-81"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-65-82" name="__codelineno-65-82" href="#__codelineno-65-82"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<a id="__codelineno-65-83" name="__codelineno-65-83" href="#__codelineno-65-83"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-84" name="__codelineno-65-84" href="#__codelineno-65-84"></a>
<a id="__codelineno-65-85" name="__codelineno-65-85" href="#__codelineno-65-85"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-65-86" name="__codelineno-65-86" href="#__codelineno-65-86"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-87" name="__codelineno-65-87" href="#__codelineno-65-87"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">size</span><span class="p">();</span>
<a id="__codelineno-65-88" name="__codelineno-65-88" href="#__codelineno-65-88"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-65-89" name="__codelineno-65-89" href="#__codelineno-65-89"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">size</span><span class="p">);</span>
<a id="__codelineno-65-90" name="__codelineno-65-90" href="#__codelineno-65-90"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-91" name="__codelineno-65-91" href="#__codelineno-65-91"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<a id="__codelineno-65-92" name="__codelineno-65-92" href="#__codelineno-65-92"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-93" name="__codelineno-65-93" href="#__codelineno-65-93"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
<a id="__codelineno-65-94" name="__codelineno-65-94" href="#__codelineno-65-94"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-65-95" name="__codelineno-65-95" href="#__codelineno-65-95"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">