mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-13 18:56:35 +08:00
deploy
This commit is contained in:
@ -3564,21 +3564,19 @@
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="cm">/* 链表节点结构体 */</span>
|
||||
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">;</span><span class="w"> </span><span class="c1">// 节点值</span>
|
||||
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span><span class="w"> </span><span class="c1">// 指向下一节点的指针</span>
|
||||
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="p">};</span>
|
||||
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="p">}</span><span class="w"> </span><span class="n">ListNode</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>
|
||||
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="n">ListNode</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a>
|
||||
<a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="cm">/* 构造函数 */</span>
|
||||
<a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="nf">newListNode</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a><span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">node</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a><span class="w"> </span><span class="n">node</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">ListNode</span><span class="p">));</span>
|
||||
<a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">val</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-15" name="__codelineno-10-15" href="#__codelineno-10-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">node</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-16" name="__codelineno-10-16" href="#__codelineno-10-16"></a><span class="p">}</span>
|
||||
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="cm">/* 构造函数 */</span>
|
||||
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="nf">newListNode</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">node</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a><span class="w"> </span><span class="n">node</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">ListNode</span><span class="p">));</span>
|
||||
<a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">val</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">node</span><span class="p">;</span>
|
||||
<a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@ -4590,23 +4588,21 @@
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-82-1" name="__codelineno-82-1" href="#__codelineno-82-1"></a><span class="cm">/* 双向链表节点结构体 */</span>
|
||||
<a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-3" name="__codelineno-82-3" href="#__codelineno-82-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">;</span><span class="w"> </span><span class="c1">// 节点值</span>
|
||||
<a id="__codelineno-82-4" name="__codelineno-82-4" href="#__codelineno-82-4"></a><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span><span class="w"> </span><span class="c1">// 指向后继节点的指针</span>
|
||||
<a id="__codelineno-82-5" name="__codelineno-82-5" href="#__codelineno-82-5"></a><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">prev</span><span class="p">;</span><span class="w"> </span><span class="c1">// 指向前驱节点的指针</span>
|
||||
<a id="__codelineno-82-6" name="__codelineno-82-6" href="#__codelineno-82-6"></a><span class="p">};</span>
|
||||
<a id="__codelineno-82-6" name="__codelineno-82-6" href="#__codelineno-82-6"></a><span class="p">}</span><span class="w"> </span><span class="n">ListNode</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-7" name="__codelineno-82-7" href="#__codelineno-82-7"></a>
|
||||
<a id="__codelineno-82-8" name="__codelineno-82-8" href="#__codelineno-82-8"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">ListNode</span><span class="w"> </span><span class="n">ListNode</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-9" name="__codelineno-82-9" href="#__codelineno-82-9"></a>
|
||||
<a id="__codelineno-82-10" name="__codelineno-82-10" href="#__codelineno-82-10"></a><span class="cm">/* 构造函数 */</span>
|
||||
<a id="__codelineno-82-11" name="__codelineno-82-11" href="#__codelineno-82-11"></a><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="nf">newListNode</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-12" name="__codelineno-82-12" href="#__codelineno-82-12"></a><span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">node</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-13" name="__codelineno-82-13" href="#__codelineno-82-13"></a><span class="w"> </span><span class="n">node</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">ListNode</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-14" name="__codelineno-82-14" href="#__codelineno-82-14"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">val</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-15" name="__codelineno-82-15" href="#__codelineno-82-15"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-16" name="__codelineno-82-16" href="#__codelineno-82-16"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">prev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-17" name="__codelineno-82-17" href="#__codelineno-82-17"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">node</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-18" name="__codelineno-82-18" href="#__codelineno-82-18"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-8" name="__codelineno-82-8" href="#__codelineno-82-8"></a><span class="cm">/* 构造函数 */</span>
|
||||
<a id="__codelineno-82-9" name="__codelineno-82-9" href="#__codelineno-82-9"></a><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="nf">newListNode</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-10" name="__codelineno-82-10" href="#__codelineno-82-10"></a><span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="n">node</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-11" name="__codelineno-82-11" href="#__codelineno-82-11"></a><span class="w"> </span><span class="n">node</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">ListNode</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">ListNode</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-12" name="__codelineno-82-12" href="#__codelineno-82-12"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">val</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-13" name="__codelineno-82-13" href="#__codelineno-82-13"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-14" name="__codelineno-82-14" href="#__codelineno-82-14"></a><span class="w"> </span><span class="n">node</span><span class="o">-></span><span class="n">prev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-15" name="__codelineno-82-15" href="#__codelineno-82-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">node</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-16" name="__codelineno-82-16" href="#__codelineno-82-16"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
@ -5159,111 +5159,109 @@
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">my_list.c</span><pre><span></span><code><a id="__codelineno-82-1" name="__codelineno-82-1" href="#__codelineno-82-1"></a><span class="cm">/* 列表类简易实现 */</span>
|
||||
<a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="k">struct</span><span class="w"> </span><span class="nc">myList</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-3" name="__codelineno-82-3" href="#__codelineno-82-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">arr</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
|
||||
<a id="__codelineno-82-4" name="__codelineno-82-4" href="#__codelineno-82-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">capacity</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
|
||||
<a id="__codelineno-82-5" name="__codelineno-82-5" href="#__codelineno-82-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表大小</span>
|
||||
<a id="__codelineno-82-6" name="__codelineno-82-6" href="#__codelineno-82-6"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">extendRatio</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表每次扩容的倍数</span>
|
||||
<a id="__codelineno-82-7" name="__codelineno-82-7" href="#__codelineno-82-7"></a><span class="p">};</span>
|
||||
<a id="__codelineno-82-7" name="__codelineno-82-7" href="#__codelineno-82-7"></a><span class="p">}</span><span class="w"> </span><span class="n">MyList</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-8" name="__codelineno-82-8" href="#__codelineno-82-8"></a>
|
||||
<a id="__codelineno-82-9" name="__codelineno-82-9" href="#__codelineno-82-9"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">myList</span><span class="w"> </span><span class="n">myList</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-10" name="__codelineno-82-10" href="#__codelineno-82-10"></a>
|
||||
<a id="__codelineno-82-11" name="__codelineno-82-11" href="#__codelineno-82-11"></a><span class="cm">/* 构造函数 */</span>
|
||||
<a id="__codelineno-82-12" name="__codelineno-82-12" href="#__codelineno-82-12"></a><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="nf">newMyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-13" name="__codelineno-82-13" href="#__codelineno-82-13"></a><span class="w"> </span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">myList</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-14" name="__codelineno-82-14" href="#__codelineno-82-14"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-15" name="__codelineno-82-15" href="#__codelineno-82-15"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-16" name="__codelineno-82-16" href="#__codelineno-82-16"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-17" name="__codelineno-82-17" href="#__codelineno-82-17"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-18" name="__codelineno-82-18" href="#__codelineno-82-18"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-19" name="__codelineno-82-19" href="#__codelineno-82-19"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-20" name="__codelineno-82-20" href="#__codelineno-82-20"></a>
|
||||
<a id="__codelineno-82-21" name="__codelineno-82-21" href="#__codelineno-82-21"></a><span class="cm">/* 析构函数 */</span>
|
||||
<a id="__codelineno-82-22" name="__codelineno-82-22" href="#__codelineno-82-22"></a><span class="kt">void</span><span class="w"> </span><span class="nf">delMyList</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-23" name="__codelineno-82-23" href="#__codelineno-82-23"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-24" name="__codelineno-82-24" href="#__codelineno-82-24"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-25" name="__codelineno-82-25" href="#__codelineno-82-25"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-26" name="__codelineno-82-26" href="#__codelineno-82-26"></a>
|
||||
<a id="__codelineno-82-27" name="__codelineno-82-27" href="#__codelineno-82-27"></a><span class="cm">/* 获取列表长度 */</span>
|
||||
<a id="__codelineno-82-28" name="__codelineno-82-28" href="#__codelineno-82-28"></a><span class="kt">int</span><span class="w"> </span><span class="nf">size</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-29" name="__codelineno-82-29" href="#__codelineno-82-29"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-30" name="__codelineno-82-30" href="#__codelineno-82-30"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-31" name="__codelineno-82-31" href="#__codelineno-82-31"></a>
|
||||
<a id="__codelineno-82-32" name="__codelineno-82-32" href="#__codelineno-82-32"></a><span class="cm">/* 获取列表容量 */</span>
|
||||
<a id="__codelineno-82-33" name="__codelineno-82-33" href="#__codelineno-82-33"></a><span class="kt">int</span><span class="w"> </span><span class="nf">capacity</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-34" name="__codelineno-82-34" href="#__codelineno-82-34"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-35" name="__codelineno-82-35" href="#__codelineno-82-35"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-36" name="__codelineno-82-36" href="#__codelineno-82-36"></a>
|
||||
<a id="__codelineno-82-37" name="__codelineno-82-37" href="#__codelineno-82-37"></a><span class="cm">/* 访问元素 */</span>
|
||||
<a id="__codelineno-82-38" name="__codelineno-82-38" href="#__codelineno-82-38"></a><span class="kt">int</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-39" name="__codelineno-82-39" href="#__codelineno-82-39"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-40" name="__codelineno-82-40" href="#__codelineno-82-40"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-41" name="__codelineno-82-41" href="#__codelineno-82-41"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-42" name="__codelineno-82-42" href="#__codelineno-82-42"></a>
|
||||
<a id="__codelineno-82-43" name="__codelineno-82-43" href="#__codelineno-82-43"></a><span class="cm">/* 更新元素 */</span>
|
||||
<a id="__codelineno-82-44" name="__codelineno-82-44" href="#__codelineno-82-44"></a><span class="kt">void</span><span class="w"> </span><span class="nf">set</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-45" name="__codelineno-82-45" href="#__codelineno-82-45"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-46" name="__codelineno-82-46" href="#__codelineno-82-46"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-47" name="__codelineno-82-47" href="#__codelineno-82-47"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-48" name="__codelineno-82-48" href="#__codelineno-82-48"></a>
|
||||
<a id="__codelineno-82-49" name="__codelineno-82-49" href="#__codelineno-82-49"></a><span class="cm">/* 尾部添加元素 */</span>
|
||||
<a id="__codelineno-82-50" name="__codelineno-82-50" href="#__codelineno-82-50"></a><span class="kt">void</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-51" name="__codelineno-82-51" href="#__codelineno-82-51"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">nums</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-52" name="__codelineno-82-52" href="#__codelineno-82-52"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="c1">// 扩容</span>
|
||||
<a id="__codelineno-82-53" name="__codelineno-82-53" href="#__codelineno-82-53"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-54" name="__codelineno-82-54" href="#__codelineno-82-54"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-55" name="__codelineno-82-55" href="#__codelineno-82-55"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-56" name="__codelineno-82-56" href="#__codelineno-82-56"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-57" name="__codelineno-82-57" href="#__codelineno-82-57"></a>
|
||||
<a id="__codelineno-82-58" name="__codelineno-82-58" href="#__codelineno-82-58"></a><span class="cm">/* 中间插入元素 */</span>
|
||||
<a id="__codelineno-82-59" name="__codelineno-82-59" href="#__codelineno-82-59"></a><span class="kt">void</span><span class="w"> </span><span class="nf">insert</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-60" name="__codelineno-82-60" href="#__codelineno-82-60"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-61" name="__codelineno-82-61" href="#__codelineno-82-61"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
|
||||
<a id="__codelineno-82-62" name="__codelineno-82-62" href="#__codelineno-82-62"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">nums</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-63" name="__codelineno-82-63" href="#__codelineno-82-63"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="c1">// 扩容</span>
|
||||
<a id="__codelineno-82-64" name="__codelineno-82-64" href="#__codelineno-82-64"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-65" name="__codelineno-82-65" href="#__codelineno-82-65"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="o">--</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-66" name="__codelineno-82-66" href="#__codelineno-82-66"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-67" name="__codelineno-82-67" href="#__codelineno-82-67"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-68" name="__codelineno-82-68" href="#__codelineno-82-68"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-69" name="__codelineno-82-69" href="#__codelineno-82-69"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-70" name="__codelineno-82-70" href="#__codelineno-82-70"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-71" name="__codelineno-82-71" href="#__codelineno-82-71"></a>
|
||||
<a id="__codelineno-82-72" name="__codelineno-82-72" href="#__codelineno-82-72"></a><span class="cm">/* 删除元素 */</span>
|
||||
<a id="__codelineno-82-73" name="__codelineno-82-73" href="#__codelineno-82-73"></a><span class="c1">// 注意:stdio.h 占用了 remove 关键词</span>
|
||||
<a id="__codelineno-82-74" name="__codelineno-82-74" href="#__codelineno-82-74"></a><span class="kt">int</span><span class="w"> </span><span class="nf">removeNum</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-75" name="__codelineno-82-75" href="#__codelineno-82-75"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-76" name="__codelineno-82-76" href="#__codelineno-82-76"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-77" name="__codelineno-82-77" href="#__codelineno-82-77"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-78" name="__codelineno-82-78" href="#__codelineno-82-78"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-79" name="__codelineno-82-79" href="#__codelineno-82-79"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-80" name="__codelineno-82-80" href="#__codelineno-82-80"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="o">--</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-81" name="__codelineno-82-81" href="#__codelineno-82-81"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-82" name="__codelineno-82-82" href="#__codelineno-82-82"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-83" name="__codelineno-82-83" href="#__codelineno-82-83"></a>
|
||||
<a id="__codelineno-82-84" name="__codelineno-82-84" href="#__codelineno-82-84"></a><span class="cm">/* 列表扩容 */</span>
|
||||
<a id="__codelineno-82-85" name="__codelineno-82-85" href="#__codelineno-82-85"></a><span class="kt">void</span><span class="w"> </span><span class="nf">extendCapacity</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-86" name="__codelineno-82-86" href="#__codelineno-82-86"></a><span class="w"> </span><span class="c1">// 先分配空间</span>
|
||||
<a id="__codelineno-82-87" name="__codelineno-82-87" href="#__codelineno-82-87"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">newCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">extendRatio</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-88" name="__codelineno-82-88" href="#__codelineno-82-88"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">extend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-89" name="__codelineno-82-89" href="#__codelineno-82-89"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-90" name="__codelineno-82-90" href="#__codelineno-82-90"></a>
|
||||
<a id="__codelineno-82-91" name="__codelineno-82-91" href="#__codelineno-82-91"></a><span class="w"> </span><span class="c1">// 拷贝旧数据到新数据</span>
|
||||
<a id="__codelineno-82-92" name="__codelineno-82-92" href="#__codelineno-82-92"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||||
<a id="__codelineno-82-93" name="__codelineno-82-93" href="#__codelineno-82-93"></a><span class="w"> </span><span class="n">extend</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-94" name="__codelineno-82-94" href="#__codelineno-82-94"></a>
|
||||
<a id="__codelineno-82-95" name="__codelineno-82-95" href="#__codelineno-82-95"></a><span class="w"> </span><span class="c1">// 释放旧数据</span>
|
||||
<a id="__codelineno-82-96" name="__codelineno-82-96" href="#__codelineno-82-96"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">temp</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-97" name="__codelineno-82-97" href="#__codelineno-82-97"></a>
|
||||
<a id="__codelineno-82-98" name="__codelineno-82-98" href="#__codelineno-82-98"></a><span class="w"> </span><span class="c1">// 更新新数据</span>
|
||||
<a id="__codelineno-82-99" name="__codelineno-82-99" href="#__codelineno-82-99"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">extend</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-100" name="__codelineno-82-100" href="#__codelineno-82-100"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-101" name="__codelineno-82-101" href="#__codelineno-82-101"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-102" name="__codelineno-82-102" href="#__codelineno-82-102"></a>
|
||||
<a id="__codelineno-82-103" name="__codelineno-82-103" href="#__codelineno-82-103"></a><span class="cm">/* 将列表转换为 Array 用于打印 */</span>
|
||||
<a id="__codelineno-82-104" name="__codelineno-82-104" href="#__codelineno-82-104"></a><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="nf">toArray</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-105" name="__codelineno-82-105" href="#__codelineno-82-105"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-106" name="__codelineno-82-106" href="#__codelineno-82-106"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-9" name="__codelineno-82-9" href="#__codelineno-82-9"></a><span class="cm">/* 构造函数 */</span>
|
||||
<a id="__codelineno-82-10" name="__codelineno-82-10" href="#__codelineno-82-10"></a><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="nf">newMyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-11" name="__codelineno-82-11" href="#__codelineno-82-11"></a><span class="w"> </span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">MyList</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-12" name="__codelineno-82-12" href="#__codelineno-82-12"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-13" name="__codelineno-82-13" href="#__codelineno-82-13"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-14" name="__codelineno-82-14" href="#__codelineno-82-14"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-15" name="__codelineno-82-15" href="#__codelineno-82-15"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-16" name="__codelineno-82-16" href="#__codelineno-82-16"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-17" name="__codelineno-82-17" href="#__codelineno-82-17"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-18" name="__codelineno-82-18" href="#__codelineno-82-18"></a>
|
||||
<a id="__codelineno-82-19" name="__codelineno-82-19" href="#__codelineno-82-19"></a><span class="cm">/* 析构函数 */</span>
|
||||
<a id="__codelineno-82-20" name="__codelineno-82-20" href="#__codelineno-82-20"></a><span class="kt">void</span><span class="w"> </span><span class="nf">delMyList</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-21" name="__codelineno-82-21" href="#__codelineno-82-21"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-22" name="__codelineno-82-22" href="#__codelineno-82-22"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-23" name="__codelineno-82-23" href="#__codelineno-82-23"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-24" name="__codelineno-82-24" href="#__codelineno-82-24"></a>
|
||||
<a id="__codelineno-82-25" name="__codelineno-82-25" href="#__codelineno-82-25"></a><span class="cm">/* 获取列表长度 */</span>
|
||||
<a id="__codelineno-82-26" name="__codelineno-82-26" href="#__codelineno-82-26"></a><span class="kt">int</span><span class="w"> </span><span class="nf">size</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-27" name="__codelineno-82-27" href="#__codelineno-82-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-28" name="__codelineno-82-28" href="#__codelineno-82-28"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-29" name="__codelineno-82-29" href="#__codelineno-82-29"></a>
|
||||
<a id="__codelineno-82-30" name="__codelineno-82-30" href="#__codelineno-82-30"></a><span class="cm">/* 获取列表容量 */</span>
|
||||
<a id="__codelineno-82-31" name="__codelineno-82-31" href="#__codelineno-82-31"></a><span class="kt">int</span><span class="w"> </span><span class="nf">capacity</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-32" name="__codelineno-82-32" href="#__codelineno-82-32"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-33" name="__codelineno-82-33" href="#__codelineno-82-33"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-34" name="__codelineno-82-34" href="#__codelineno-82-34"></a>
|
||||
<a id="__codelineno-82-35" name="__codelineno-82-35" href="#__codelineno-82-35"></a><span class="cm">/* 访问元素 */</span>
|
||||
<a id="__codelineno-82-36" name="__codelineno-82-36" href="#__codelineno-82-36"></a><span class="kt">int</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-37" name="__codelineno-82-37" href="#__codelineno-82-37"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-38" name="__codelineno-82-38" href="#__codelineno-82-38"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-39" name="__codelineno-82-39" href="#__codelineno-82-39"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-40" name="__codelineno-82-40" href="#__codelineno-82-40"></a>
|
||||
<a id="__codelineno-82-41" name="__codelineno-82-41" href="#__codelineno-82-41"></a><span class="cm">/* 更新元素 */</span>
|
||||
<a id="__codelineno-82-42" name="__codelineno-82-42" href="#__codelineno-82-42"></a><span class="kt">void</span><span class="w"> </span><span class="nf">set</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-43" name="__codelineno-82-43" href="#__codelineno-82-43"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-44" name="__codelineno-82-44" href="#__codelineno-82-44"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-45" name="__codelineno-82-45" href="#__codelineno-82-45"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-46" name="__codelineno-82-46" href="#__codelineno-82-46"></a>
|
||||
<a id="__codelineno-82-47" name="__codelineno-82-47" href="#__codelineno-82-47"></a><span class="cm">/* 尾部添加元素 */</span>
|
||||
<a id="__codelineno-82-48" name="__codelineno-82-48" href="#__codelineno-82-48"></a><span class="kt">void</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-49" name="__codelineno-82-49" href="#__codelineno-82-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">nums</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-50" name="__codelineno-82-50" href="#__codelineno-82-50"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="c1">// 扩容</span>
|
||||
<a id="__codelineno-82-51" name="__codelineno-82-51" href="#__codelineno-82-51"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-52" name="__codelineno-82-52" href="#__codelineno-82-52"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-53" name="__codelineno-82-53" href="#__codelineno-82-53"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-54" name="__codelineno-82-54" href="#__codelineno-82-54"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-55" name="__codelineno-82-55" href="#__codelineno-82-55"></a>
|
||||
<a id="__codelineno-82-56" name="__codelineno-82-56" href="#__codelineno-82-56"></a><span class="cm">/* 中间插入元素 */</span>
|
||||
<a id="__codelineno-82-57" name="__codelineno-82-57" href="#__codelineno-82-57"></a><span class="kt">void</span><span class="w"> </span><span class="nf">insert</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-58" name="__codelineno-82-58" href="#__codelineno-82-58"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-59" name="__codelineno-82-59" href="#__codelineno-82-59"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
|
||||
<a id="__codelineno-82-60" name="__codelineno-82-60" href="#__codelineno-82-60"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">nums</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-61" name="__codelineno-82-61" href="#__codelineno-82-61"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="c1">// 扩容</span>
|
||||
<a id="__codelineno-82-62" name="__codelineno-82-62" href="#__codelineno-82-62"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-63" name="__codelineno-82-63" href="#__codelineno-82-63"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="o">--</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-64" name="__codelineno-82-64" href="#__codelineno-82-64"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-65" name="__codelineno-82-65" href="#__codelineno-82-65"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-66" name="__codelineno-82-66" href="#__codelineno-82-66"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-67" name="__codelineno-82-67" href="#__codelineno-82-67"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-68" name="__codelineno-82-68" href="#__codelineno-82-68"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-69" name="__codelineno-82-69" href="#__codelineno-82-69"></a>
|
||||
<a id="__codelineno-82-70" name="__codelineno-82-70" href="#__codelineno-82-70"></a><span class="cm">/* 删除元素 */</span>
|
||||
<a id="__codelineno-82-71" name="__codelineno-82-71" href="#__codelineno-82-71"></a><span class="c1">// 注意:stdio.h 占用了 remove 关键词</span>
|
||||
<a id="__codelineno-82-72" name="__codelineno-82-72" href="#__codelineno-82-72"></a><span class="kt">int</span><span class="w"> </span><span class="nf">removeNum</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-73" name="__codelineno-82-73" href="#__codelineno-82-73"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">));</span>
|
||||
<a id="__codelineno-82-74" name="__codelineno-82-74" href="#__codelineno-82-74"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-75" name="__codelineno-82-75" href="#__codelineno-82-75"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-76" name="__codelineno-82-76" href="#__codelineno-82-76"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-77" name="__codelineno-82-77" href="#__codelineno-82-77"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-82-78" name="__codelineno-82-78" href="#__codelineno-82-78"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">size</span><span class="o">--</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-79" name="__codelineno-82-79" href="#__codelineno-82-79"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-80" name="__codelineno-82-80" href="#__codelineno-82-80"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-81" name="__codelineno-82-81" href="#__codelineno-82-81"></a>
|
||||
<a id="__codelineno-82-82" name="__codelineno-82-82" href="#__codelineno-82-82"></a><span class="cm">/* 列表扩容 */</span>
|
||||
<a id="__codelineno-82-83" name="__codelineno-82-83" href="#__codelineno-82-83"></a><span class="kt">void</span><span class="w"> </span><span class="nf">extendCapacity</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-84" name="__codelineno-82-84" href="#__codelineno-82-84"></a><span class="w"> </span><span class="c1">// 先分配空间</span>
|
||||
<a id="__codelineno-82-85" name="__codelineno-82-85" href="#__codelineno-82-85"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">newCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">extendRatio</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-86" name="__codelineno-82-86" href="#__codelineno-82-86"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">extend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-87" name="__codelineno-82-87" href="#__codelineno-82-87"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-88" name="__codelineno-82-88" href="#__codelineno-82-88"></a>
|
||||
<a id="__codelineno-82-89" name="__codelineno-82-89" href="#__codelineno-82-89"></a><span class="w"> </span><span class="c1">// 拷贝旧数据到新数据</span>
|
||||
<a id="__codelineno-82-90" name="__codelineno-82-90" href="#__codelineno-82-90"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">nums</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
|
||||
<a id="__codelineno-82-91" name="__codelineno-82-91" href="#__codelineno-82-91"></a><span class="w"> </span><span class="n">extend</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
|
||||
<a id="__codelineno-82-92" name="__codelineno-82-92" href="#__codelineno-82-92"></a>
|
||||
<a id="__codelineno-82-93" name="__codelineno-82-93" href="#__codelineno-82-93"></a><span class="w"> </span><span class="c1">// 释放旧数据</span>
|
||||
<a id="__codelineno-82-94" name="__codelineno-82-94" href="#__codelineno-82-94"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">temp</span><span class="p">);</span>
|
||||
<a id="__codelineno-82-95" name="__codelineno-82-95" href="#__codelineno-82-95"></a>
|
||||
<a id="__codelineno-82-96" name="__codelineno-82-96" href="#__codelineno-82-96"></a><span class="w"> </span><span class="c1">// 更新新数据</span>
|
||||
<a id="__codelineno-82-97" name="__codelineno-82-97" href="#__codelineno-82-97"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">extend</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-98" name="__codelineno-82-98" href="#__codelineno-82-98"></a><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-99" name="__codelineno-82-99" href="#__codelineno-82-99"></a><span class="p">}</span>
|
||||
<a id="__codelineno-82-100" name="__codelineno-82-100" href="#__codelineno-82-100"></a>
|
||||
<a id="__codelineno-82-101" name="__codelineno-82-101" href="#__codelineno-82-101"></a><span class="cm">/* 将列表转换为 Array 用于打印 */</span>
|
||||
<a id="__codelineno-82-102" name="__codelineno-82-102" href="#__codelineno-82-102"></a><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="nf">toArray</span><span class="p">(</span><span class="n">MyList</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-82-103" name="__codelineno-82-103" href="#__codelineno-82-103"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">-></span><span class="n">arr</span><span class="p">;</span>
|
||||
<a id="__codelineno-82-104" name="__codelineno-82-104" href="#__codelineno-82-104"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
Reference in New Issue
Block a user