sortedlistpriorityqueue-sortedlistpriorityqueue2.html

来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 53 行

HTML
53
字号
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre>  <font color = #ff0080>/** Returns but does not remove an entry with minimum key. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>Entry&lt;K,V&gt; <font color=#0000ff>min </font>() <font color=#8000a0><font color=#ff8000>throws</font> </font>EmptyPriorityQueueException {    <font color=#ff8000>if</font><font color=#0000ff> </font>(entries.<font color=#0000ff>isEmpty</font>())      <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>EmptyPriorityQueueException</font>(<font color=#008000>"priority queue is empty"</font>);    <font color=#ff8000>else</font>      <font color=#8000a0><font color=#ff8000>return</font> </font>entries.<font color=#0000ff>first</font>().<font color=#0000ff>element</font>();  }  <font color = #ff0080>/** Inserts a key-value pair and return the entry created. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>Entry&lt;K,V&gt; <font color=#0000ff>insert </font>(K k, <font color=#8000a0>V </font>v) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidKeyException {    <font color=#0000ff>checkKey</font>(k); <font color=#ff0080>// auxiliary key-checking method (could throw exception)</font>    Entry&lt;K,V&gt; entry = <font color=#8000a0><font color=#ff8000>new</font> </font>MyEntry&lt;K,V&gt;<font color=#0000ff></font>(k, v);    <font color=#0000ff>insertEntry</font>(entry);               <font color=#ff0080>// auxiliary insertion method</font>    <font color=#8000a0><font color=#ff8000>return</font> </font>entry;  }  <font color = #ff0080>/** Auxiliary method used for insertion. */</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>insertEntry</font>(Entry&lt;K,V&gt; e) {    <font color=#ff8000>if</font><font color=#0000ff> </font>(entries.<font color=#0000ff>isEmpty</font>()) {      entries.<font color=#0000ff>addFirst</font>(e);            <font color=#ff0080>// insert into empty list</font>      actionPos = entries.<font color=#0000ff>first</font>();    <font color=#ff0080>// insertion position </font>    }    <font color=#8000a0><font color=#ff8000>else</font> </font><font color=#ff8000>if</font><font color=#0000ff> </font>(c.<font color=#0000ff>compare</font>(e.<font color=#0000ff>getKey</font>(), entries.<font color=#0000ff>last</font>().<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>()) &gt; 0) {      entries.<font color=#0000ff>addLast</font>(e);             <font color=#ff0080>// insert at the end of the list</font>      actionPos = entries.<font color=#0000ff>last</font>();     <font color=#ff0080>// insertion position</font>    }    <font color=#ff8000>else</font> {      Position&lt;Entry&lt;K,V&gt;&gt; curr = entries.<font color=#0000ff>first</font>();      <font color=#ff8000>while</font><font color=#0000ff> </font>(c.<font color=#0000ff>compare</font>(e.<font color=#0000ff>getKey</font>(), curr.<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>())&gt; 0) {	curr = entries.<font color=#0000ff>next</font>(curr);    <font color=#ff0080>// advance toward insertion position</font>      }      entries.<font color=#0000ff>addBefore</font>(curr, e);       actionPos = entries.<font color=#0000ff>prev</font>(curr); <font color=#ff0080>// insertion position</font>    }  }  <font color = #ff0080>/** Removes and returns an entry with minimum key. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>Entry&lt;K,V&gt; <font color=#0000ff>removeMin</font>() <font color=#8000a0><font color=#ff8000>throws</font> </font>EmptyPriorityQueueException {    <font color=#ff8000>if</font><font color=#0000ff> </font>(entries.<font color=#0000ff>isEmpty</font>())      <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>EmptyPriorityQueueException</font>(<font color=#008000>"priority queue is empty"</font>);    <font color=#ff8000>else</font>      <font color=#8000a0><font color=#ff8000>return</font> </font>entries.<font color=#0000ff>remove</font>(entries.<font color=#0000ff>first</font>());  }</dl></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?