Loading... ## [数据结构] 跳表(skipList) Python实现 [漫画: 什么是“跳表”?](http://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653211187&idx=1&sn=c062ab9598cf0af12acbf849478bb0d3&chksm=8c99b8e9bbee31ff9b1c86cfb32030b4cbabc0b98e9be850efe46fffb6eb6bac335f8b2b7b43&mpshare=1&scene=23&srcid=0825XUNJkU280Ru3Dbkw7v3w&sharer_sharetime=1598339631027&sharer_shareid=00bca55feaecb55710fa0a163922966c#rd) Python实现: <pre mdtype="fences" cid="n7" lang="python" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false"> <span role="presentation"><span class="cm-keyword">import</span> <span class="cm-variable">random</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span class="cm-variable">MAX_VALUE</span> = <span class="cm-builtin">float</span>(<span class="cm-string">'inf'</span>)</span><br/> <span role="presentation"><span class="cm-variable">MIN_VALUE</span> = <span class="cm-builtin">float</span>(<span class="cm-string">'-inf'</span>)</span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span class="cm-keyword">class</span> <span class="cm-def">Node</span>(<span class="cm-builtin">object</span>):</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 链表节点</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">__init__</span>(<span class="cm-variable-2">self</span>, <span class="cm-variable">val</span>):</span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">left</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">right</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">up</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">down</span> = <span class="cm-keyword">None</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">val</span> = <span class="cm-variable">val</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span class="cm-keyword">class</span> <span class="cm-def">SkipList</span>(<span class="cm-builtin">object</span>):</span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-variable">promote_rate</span> = <span class="cm-number">0.5</span></span><br/> <span role="presentation"> <span class="cm-variable">max_level</span> = <span class="cm-number">0</span></span><br/> <span role="presentation"> <span class="cm-variable">head</span>, <span class="cm-variable">tail</span> = <span class="cm-variable">Node</span>(<span class="cm-variable">MIN_VALUE</span>), <span class="cm-variable">Node</span>(<span class="cm-variable">MAX_VALUE</span>)</span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">__init__</span>(<span class="cm-variable-2">self</span>):</span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">head</span>.<span class="cm-property">right</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">tail</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">tail</span>.<span class="cm-property">left</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">head</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">find_node</span>(<span class="cm-variable-2">self</span>, <span class="cm-variable">data</span>) <span class="cm-operator">-></span> <span class="cm-variable">Node</span>:</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 找到值对应的前置节点</span></span><br/> <span role="presentation"><span class="cm-string"> :param data:</span></span><br/> <span role="presentation"><span class="cm-string"> :return: 返回前置节点</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-variable">node</span>: <span class="cm-variable">Node</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">head</span></span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-keyword">True</span>:</span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-variable">node</span>.<span class="cm-property">right</span>.<span class="cm-property">val</span> <span class="cm-operator">!</span>= <span class="cm-variable">MAX_VALUE</span> <span class="cm-keyword">and</span> <span class="cm-variable">node</span>.<span class="cm-property">right</span>.<span class="cm-property">val</span> <span class="cm-operator"><</span>= <span class="cm-variable">data</span>:</span><br/> <span role="presentation"> <span class="cm-variable">node</span> = <span class="cm-variable">node</span>.<span class="cm-property">right</span></span><br/> <span role="presentation"> <span class="cm-comment"># 在水平方向已找到前置节点</span></span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">node</span>.<span class="cm-property">down</span> <span class="cm-keyword">is</span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-keyword">break</span></span><br/> <span role="presentation"> <span class="cm-variable">node</span> = <span class="cm-variable">node</span>.<span class="cm-property">down</span></span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-variable">node</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">search</span>(<span class="cm-variable-2">self</span>, <span class="cm-variable">val</span>) <span class="cm-operator">-></span> (<span class="cm-variable">Node</span>, <span class="cm-keyword">None</span>):</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 查找节点</span></span><br/> <span role="presentation"><span class="cm-string"> :return: None</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-variable">p</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">find_node</span>(<span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">p</span>.<span class="cm-property">val</span> == <span class="cm-variable">val</span>:</span><br/> <span role="presentation"> <span class="cm-builtin">print</span>(<span class="cm-string">"找到节点: "</span>, <span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-variable">p</span></span><br/> <span role="presentation"> <span class="cm-builtin">print</span>(<span class="cm-string">"未找到节点: "</span>, <span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-keyword">None</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">insert</span>(<span class="cm-variable-2">self</span>, <span class="cm-variable">val</span>):</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 插入节点</span></span><br/> <span role="presentation"><span class="cm-string"> :param val: 节点值域</span></span><br/> <span role="presentation"><span class="cm-string"> :return:</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-variable">pre_node</span>: <span class="cm-variable">Node</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">find_node</span>(<span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-comment"># 如果值相同,直接返回</span></span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">pre_node</span>.<span class="cm-property">val</span> == <span class="cm-variable">val</span>:</span><br/> <span role="presentation"> <span class="cm-keyword">return</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-variable">node</span>: <span class="cm-variable">Node</span> = <span class="cm-variable">Node</span>(<span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">append_node</span>(<span class="cm-variable">pre_node</span>, <span class="cm-variable">node</span>)</span><br/> <span role="presentation"> <span class="cm-variable">current_level</span>: <span class="cm-builtin">int</span> = <span class="cm-number">0</span></span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-variable">random</span>.<span class="cm-property">uniform</span>(<span class="cm-number">0</span>, <span class="cm-number">1</span>) <span class="cm-operator"><</span> <span class="cm-variable-2">self</span>.<span class="cm-property">promote_rate</span>:</span><br/> <span role="presentation"> <span class="cm-comment"># 如果当前层已是最高层,需要增加一层</span></span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">current_level</span> == <span class="cm-variable-2">self</span>.<span class="cm-property">max_level</span>:</span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">add_level</span>()</span><br/> <span role="presentation"> <span class="cm-comment"># 找到上一层的前置节点</span></span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-variable">pre_node</span>.<span class="cm-property">up</span> <span class="cm-keyword">is</span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-variable">pre_node</span> = <span class="cm-variable">pre_node</span>.<span class="cm-property">left</span></span><br/> <span role="presentation"> <span class="cm-variable">pre_node</span> = <span class="cm-variable">pre_node</span>.<span class="cm-property">up</span></span><br/> <span role="presentation"> <span class="cm-comment"># 把新节点插入到上一层</span></span><br/> <span role="presentation"> <span class="cm-variable">upper_node</span> = <span class="cm-variable">Node</span>(<span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">append_node</span>(<span class="cm-variable">pre_node</span>, <span class="cm-variable">upper_node</span>)</span><br/> <span role="presentation"> <span class="cm-variable">upper_node</span>.<span class="cm-property">down</span> = <span class="cm-variable">node</span></span><br/> <span role="presentation"> <span class="cm-variable">node</span>.<span class="cm-property">up</span> = <span class="cm-variable">upper_node</span></span><br/> <span role="presentation"> <span class="cm-variable">node</span> = <span class="cm-variable">upper_node</span></span><br/> <span role="presentation"> <span class="cm-variable">current_level</span> += <span class="cm-number">1</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-meta">@staticmethod</span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">append_node</span>(<span class="cm-variable">pre_node</span>: <span class="cm-variable">Node</span>, <span class="cm-variable">new_node</span>: <span class="cm-variable">Node</span>) <span class="cm-operator">-></span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 在前置节点后添加新节点</span></span><br/> <span role="presentation"><span class="cm-string"> :param pre_node: 前置节点</span></span><br/> <span role="presentation"><span class="cm-string"> :param new_node: 新节点</span></span><br/> <span role="presentation"><span class="cm-string"> :return:</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-variable">new_node</span>.<span class="cm-property">left</span> = <span class="cm-variable">pre_node</span></span><br/> <span role="presentation"> <span class="cm-variable">new_node</span>.<span class="cm-property">right</span> = <span class="cm-variable">pre_node</span>.<span class="cm-property">right</span></span><br/> <span role="presentation"> <span class="cm-variable">pre_node</span>.<span class="cm-property">right</span>.<span class="cm-property">left</span> = <span class="cm-variable">new_node</span></span><br/> <span role="presentation"> <span class="cm-variable">pre_node</span>.<span class="cm-property">right</span> = <span class="cm-variable">new_node</span></span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-keyword">None</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">add_level</span>(<span class="cm-variable-2">self</span>) <span class="cm-operator">-></span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 增加一层</span></span><br/> <span role="presentation"><span class="cm-string"> :return:</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">max_level</span> += <span class="cm-number">1</span></span><br/> <span role="presentation"> <span class="cm-variable">p1</span> = <span class="cm-variable">Node</span>(<span class="cm-variable">MIN_VALUE</span>)</span><br/> <span role="presentation"> <span class="cm-variable">p2</span> = <span class="cm-variable">Node</span>(<span class="cm-variable">MAX_VALUE</span>)</span><br/> <span role="presentation"> <span class="cm-variable">p1</span>.<span class="cm-property">right</span> = <span class="cm-variable">p2</span></span><br/> <span role="presentation"> <span class="cm-variable">p2</span>.<span class="cm-property">left</span> = <span class="cm-variable">p1</span></span><br/> <span role="presentation"> <span class="cm-variable">p1</span>.<span class="cm-property">down</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">head</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">head</span>.<span class="cm-property">up</span> = <span class="cm-variable">p1</span></span><br/> <span role="presentation"> <span class="cm-variable">p2</span>.<span class="cm-property">down</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">tail</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">tail</span>.<span class="cm-property">up</span> = <span class="cm-variable">p2</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">head</span> = <span class="cm-variable">p1</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">tail</span> = <span class="cm-variable">p2</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">remove</span>(<span class="cm-variable-2">self</span>, <span class="cm-variable">val</span>) <span class="cm-operator">-></span> <span class="cm-builtin">bool</span>:</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 删除节点</span></span><br/> <span role="presentation"><span class="cm-string"> :param val:</span></span><br/> <span role="presentation"><span class="cm-string"> :return:</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-comment"># 找到这个待删除节点</span></span><br/> <span role="presentation"> <span class="cm-variable">remove_node</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">search</span>(<span class="cm-variable">val</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">remove_node</span> <span class="cm-keyword">is</span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-keyword">False</span></span><br/> <span role="presentation"> <span class="cm-variable">current_level</span>: <span class="cm-builtin">int</span> = <span class="cm-number">0</span></span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-variable">remove_node</span> <span class="cm-keyword">is</span> <span class="cm-keyword">not</span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-variable">remove_node</span>.<span class="cm-property">right</span>.<span class="cm-property">left</span> = <span class="cm-variable">remove_node</span>.<span class="cm-property">left</span></span><br/> <span role="presentation"> <span class="cm-variable">remove_node</span>.<span class="cm-property">left</span>.<span class="cm-property">right</span> = <span class="cm-variable">remove_node</span>.<span class="cm-property">right</span></span><br/> <span role="presentation"> <span class="cm-comment"># 如果不是最底层且只有无穷小和无穷大节点,则删除该层</span></span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">current_level</span> <span class="cm-operator">!</span>= <span class="cm-number">0</span> <span class="cm-keyword">and</span> <span class="cm-variable">remove_node</span>.<span class="cm-property">left</span>.<span class="cm-property">val</span> == <span class="cm-variable">MIN_VALUE</span> <span class="cm-keyword">and</span> <span class="cm-variable">remove_node</span>.<span class="cm-property">right</span>.<span class="cm-property">val</span> == <span class="cm-variable">MAX_VALUE</span>:</span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">remove_level</span>(<span class="cm-variable">remove_node</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">else</span>:</span><br/> <span role="presentation"> <span class="cm-variable">current_level</span> += <span class="cm-number">1</span></span><br/> <span role="presentation"> <span class="cm-variable">remove_node</span> = <span class="cm-variable">remove_node</span>.<span class="cm-property">up</span></span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-keyword">True</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">remove_level</span>(<span class="cm-variable-2">self</span>, <span class="cm-variable">left_node</span>: <span class="cm-variable">Node</span>) <span class="cm-operator">-></span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-string">"""</span></span><br/> <span role="presentation"><span class="cm-string"> 删除一层</span></span><br/> <span role="presentation"><span class="cm-string"> :param left_node:</span></span><br/> <span role="presentation"><span class="cm-string"> :return:</span></span><br/> <span role="presentation"><span class="cm-string"> """</span></span><br/> <span role="presentation"> <span class="cm-variable">right_node</span>: <span class="cm-variable">Node</span> = <span class="cm-variable">left_node</span>.<span class="cm-property">right</span></span><br/> <span role="presentation"> <span class="cm-comment"># 如果删除层是最高层</span></span><br/> <span role="presentation"> <span class="cm-keyword">if</span> <span class="cm-variable">left_node</span>.<span class="cm-property">up</span> <span class="cm-keyword">is</span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-variable">left_node</span>.<span class="cm-property">down</span>.<span class="cm-property">up</span> = <span class="cm-keyword">None</span></span><br/> <span role="presentation"> <span class="cm-variable">right_node</span>.<span class="cm-property">down</span>.<span class="cm-property">up</span> = <span class="cm-keyword">None</span></span><br/> <span role="presentation"> <span class="cm-keyword">else</span>:</span><br/> <span role="presentation"> <span class="cm-variable">left_node</span>.<span class="cm-property">up</span>.<span class="cm-property">down</span> = <span class="cm-variable">left_node</span>.<span class="cm-property">down</span></span><br/> <span role="presentation"> <span class="cm-variable">left_node</span>.<span class="cm-property">down</span>.<span class="cm-property">up</span> = <span class="cm-variable">left_node</span>.<span class="cm-property">up</span></span><br/> <span role="presentation"> <span class="cm-variable">right_node</span>.<span class="cm-property">up</span>.<span class="cm-property">down</span> = <span class="cm-variable">right_node</span>.<span class="cm-property">down</span></span><br/> <span role="presentation"> <span class="cm-variable">right_node</span>.<span class="cm-property">down</span>.<span class="cm-property">up</span> = <span class="cm-variable">right_node</span>.<span class="cm-property">up</span></span><br/> <span role="presentation"> <span class="cm-variable-2">self</span>.<span class="cm-property">max_level</span> -= <span class="cm-number">1</span></span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-keyword">None</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"> <span class="cm-comment"># 输出底层链表</span></span><br/> <span role="presentation"> <span class="cm-keyword">def</span> <span class="cm-def">print_list</span>(<span class="cm-variable-2">self</span>) <span class="cm-operator">-></span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-variable">node</span> = <span class="cm-variable-2">self</span>.<span class="cm-property">head</span></span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-variable">node</span>.<span class="cm-property">down</span> <span class="cm-keyword">is</span> <span class="cm-keyword">not</span> <span class="cm-keyword">None</span>:</span><br/> <span role="presentation"> <span class="cm-variable">node</span> = <span class="cm-variable">node</span>.<span class="cm-property">down</span></span><br/> <span role="presentation"> <span class="cm-comment"># 此时node是最底层的head节点</span></span><br/> <span role="presentation"> <span class="cm-comment"># 下面循环一直往右遍历</span></span><br/> <span role="presentation"> <span class="cm-keyword">while</span> <span class="cm-variable">node</span>.<span class="cm-property">right</span>.<span class="cm-property">val</span> <span class="cm-operator">!</span>= <span class="cm-variable">MAX_VALUE</span>:</span><br/> <span role="presentation"> <span class="cm-builtin">print</span>(<span class="cm-variable">node</span>.<span class="cm-property">right</span>.<span class="cm-property">val</span>, <span class="cm-variable">end</span>=<span class="cm-string">" "</span>)</span><br/> <span role="presentation"> <span class="cm-variable">node</span> = <span class="cm-variable">node</span>.<span class="cm-property">right</span></span><br/> <span role="presentation"> <span class="cm-builtin">print</span>(<span class="cm-string">""</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">return</span> <span class="cm-keyword">None</span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span cm-text=""></span></span><br/> <span role="presentation"><span class="cm-keyword">if</span> <span class="cm-variable">__name__</span> == <span class="cm-string">'__main__'</span>:</span><br/> <span role="presentation"> <span class="cm-variable">skip_list</span> = <span class="cm-variable">SkipList</span>()</span><br/> <span role="presentation"> <span class="cm-variable">skip_list</span>.<span class="cm-property">insert</span>(<span class="cm-number">50</span>)</span><br/> <span role="presentation"> <span class="cm-keyword">for</span> <span class="cm-variable">i</span> <span class="cm-keyword">in</span> <span class="cm-builtin">range</span>(<span class="cm-number">12</span>):</span><br/> <span role="presentation"> <span class="cm-variable">skip_list</span>.<span class="cm-property">insert</span>(<span class="cm-variable">random</span>.<span class="cm-property">randint</span>(<span class="cm-number">10</span>, <span class="cm-number">200</span>))</span><br/> <span role="presentation"> <span class="cm-variable">skip_list</span>.<span class="cm-property">print_list</span>()</span><br/> <span role="presentation"> <span class="cm-variable">skip_list</span>.<span class="cm-property">search</span>(<span class="cm-number">50</span>)</span><br/> <span role="presentation"> <span class="cm-builtin">print</span>(<span class="cm-variable">skip_list</span>.<span class="cm-property">remove</span>(<span class="cm-number">50</span>))</span><br/> <span role="presentation"> <span class="cm-variable">skip_list</span>.<span class="cm-property">print_list</span>()</span><br/> <span role="presentation"><span cm-text=""></span></span></pre> Last modification:August 25th, 2020 at 03:17 pm © 允许规范转载