document.open();document.writeln('<div onmouseover="document.getElementById(\'snipt-3640\').style.display = \'block\'; return false;" onmouseout="document.getElementById(\'snipt-3640\').style.display = \'none\'; return false;" style="position: relative;">');document.writeln('<div class="highlight"><pre style="-moz-border-radius: 5px; border-radius: 5px; -webkit-border-radius: 5px; margin: 0; display: block; font: 11px Monaco, monospace !important; padding: 15px; background-color: #1C1C1C; overflow: auto; color: #D0D0D0;"><span style="color: #cd2828; font-weight: normal">#include &lt;stdio.h&gt;</span>');document.writeln('<span style="color: #cd2828; font-weight: normal">#include &lt;string.h&gt;</span>');document.writeln('<span style="color: #cd2828; font-weight: normal">#include &lt;stdlib.h&gt;</span>');document.writeln('<span style="color: #cd2828; font-weight: normal">#include &lt;math.h&gt;</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">typedef</span> <span style="color: #6ab825; font-weight: normal">struct</span> <span style="color: #d0d0d0">hash_node_s</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">key;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">data;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">struct</span> <span style="color: #d0d0d0">hash_node_s</span> <span style="color: #d0d0d0">*next;</span>');document.writeln('<span style="color: #d0d0d0">}</span> <span style="color: #d0d0d0">hash_node_t;</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">typedef</span> <span style="color: #6ab825; font-weight: normal">struct</span> ');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*list;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">short</span> <span style="color: #d0d0d0">count;</span>');document.writeln('<span style="color: #d0d0d0">}</span> <span style="color: #d0d0d0">hash_data_t;</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">typedef</span> <span style="color: #6ab825; font-weight: normal">struct</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #d0d0d0">hash_data_t</span> <span style="color: #d0d0d0">*table;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">max_colitions;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">size;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">used;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">unsigned</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">(*hash_f)(</span><span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*k);</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">(*compare)(</span><span style="color: #6ab825; font-weight: normal">const</span> <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a,</span> <span style="color: #6ab825; font-weight: normal">const</span> <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">b);</span> ');document.writeln('    <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">(*destroy_key)(</span><span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a);</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">(*destroy_data)(</span><span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a);</span>');document.writeln('<span style="color: #d0d0d0">}</span> <span style="color: #d0d0d0">hash_table_t;</span>');document.writeln('');document.writeln('<span style="color: #d0d0d0">hash_table_t</span> <span style="color: #d0d0d0">*hash_create(</span><span style="color: #6ab825; font-weight: normal">unsigned</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">(hash_f)(</span><span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*k),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">(*Compare)(</span><span style="color: #6ab825; font-weight: normal">const</span> <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a,</span> <span style="color: #6ab825; font-weight: normal">const</span> <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">b),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">(*DestroyKey)(</span><span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">(*DestroyInfo)(</span><span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">initial_size);</span>');document.writeln('');document.writeln('<span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*hash_insert(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*data);</span>');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">hash_delete(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key);</span>');document.writeln('<span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*hash_find_node(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key);</span>');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*hash_find_data(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key);</span>');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">hash_destroy(hash_table_t</span> <span style="color: #d0d0d0">*table);</span>');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">hash_rebuild(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">new_size);</span>');document.writeln('');document.writeln('');document.writeln('<span style="color: #d0d0d0">hash_table_t</span> <span style="color: #d0d0d0">*</span><span style="color: #447fcf">hash_create</span><span style="color: #d0d0d0">(</span><span style="color: #6ab825; font-weight: normal">unsigned</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">(*hash_f)(</span><span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*k),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">(*compare)(</span><span style="color: #6ab825; font-weight: normal">const</span> <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a,</span> <span style="color: #6ab825; font-weight: normal">const</span> <span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">b),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">(*destroy_key)(</span><span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">(*destroy_data)(</span><span style="color: #6ab825; font-weight: normal">void</span><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">a),</span>');document.writeln('                            <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">initial_size)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #d0d0d0">hash_table_t</span> <span style="color: #d0d0d0">*hash_table;</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">if</span><span style="color: #d0d0d0">(</span> <span style="color: #d0d0d0">(hash_table</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*)malloc(</span><span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_table_t)))</span> <span style="color: #d0d0d0">==</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">)</span>');document.writeln('        <span style="color: #6ab825; font-weight: normal">return</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">memset(hash_table,</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">,</span> <span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_table));</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;max_colitions</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span>');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;size</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">initial_size;</span>');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;used</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span>');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;hash_f</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">hash_f;</span>');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;compare</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">compare;</span>');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;destroy_key</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">destroy_key;</span>');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;destroy_data</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">destroy_data;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">hash_table-&gt;table</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">(hash_data_t</span> <span style="color: #d0d0d0">*)malloc(</span><span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_data_t)*initial_size);</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">memset(hash_table-&gt;table,</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">,</span> <span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_data_t)*initial_size);</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">return</span> <span style="color: #d0d0d0">hash_table;</span>');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('<span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*</span><span style="color: #447fcf">hash_insert</span><span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*data)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">unsigned</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">num_key;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">num_key</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;hash_f(key)</span> <span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">table-&gt;size;</span>');document.writeln('    ');document.writeln('    <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">(hash_node_t</span> <span style="color: #d0d0d0">*)malloc(</span><span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_node_t));</span>');document.writeln('');document.writeln('');document.writeln('    <span style="color: #d0d0d0">node-&gt;key</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">key;</span>');document.writeln('    <span style="color: #d0d0d0">node-&gt;next</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;table[num_key].list;</span>');document.writeln('    <span style="color: #d0d0d0">node-&gt;data</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">data;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">table-&gt;table[num_key].list</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node;</span>');document.writeln('    <span style="color: #d0d0d0">table-&gt;table[num_key].count++;</span>');document.writeln('    ');document.writeln('    <span style="color: #6ab825; font-weight: normal">if</span><span style="color: #d0d0d0">(table-&gt;max_colitions</span> <span style="color: #d0d0d0">&lt;</span> <span style="color: #d0d0d0">table-&gt;table[num_key].count)</span>');document.writeln('        <span style="color: #d0d0d0">table-&gt;max_colitions</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;table[num_key].count;</span>');document.writeln('    ');document.writeln('    <span style="color: #6ab825; font-weight: normal">return</span> <span style="color: #d0d0d0">node;</span>');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*</span><span style="color: #447fcf">hash_find_data</span><span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">hash_find_node(table,</span> <span style="color: #d0d0d0">key);</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">if</span><span style="color: #d0d0d0">(node</span> <span style="color: #d0d0d0">==</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">)</span>');document.writeln('        <span style="color: #6ab825; font-weight: normal">return</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">;</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">return</span> <span style="color: #d0d0d0">node-&gt;data;</span>');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('<span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*</span><span style="color: #447fcf">hash_find_node</span><span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">unsigned</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">num_key;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">num_key</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;hash_f(key)</span> <span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">table-&gt;size;</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">for</span><span style="color: #d0d0d0">(node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;table[num_key].list;</span>');document.writeln('            <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">!=</span> <span style="color: #24909d">NULL</span> <span style="color: #d0d0d0">&amp;&amp;</span> <span style="color: #d0d0d0">table-&gt;compare(node-&gt;key,</span> <span style="color: #d0d0d0">key)</span> <span style="color: #d0d0d0">!=</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span>');document.writeln('            <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node-&gt;next);</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">return</span> <span style="color: #d0d0d0">node;</span>');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #447fcf">hash_rebuild</span><span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">new_size)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #d0d0d0">hash_data_t</span> <span style="color: #d0d0d0">*new_table;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node_next;</span>');document.writeln('    <span style="color: #d0d0d0">hash_data_t</span> <span style="color: #d0d0d0">*old_table;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">old_size;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">i;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">new_table</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">(hash_data_t</span> <span style="color: #d0d0d0">*)malloc(</span><span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_data_t)</span> <span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">new_size);</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">memset(new_table,</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">,</span> <span style="color: #6ab825; font-weight: normal">sizeof</span><span style="color: #d0d0d0">(hash_data_t)</span> <span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">new_size);</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">old_table</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;table;</span>');document.writeln('    <span style="color: #d0d0d0">old_size</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;size;</span>');document.writeln('    <span style="color: #d0d0d0">table-&gt;table</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">new_table;</span>');document.writeln('    <span style="color: #d0d0d0">table-&gt;size</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">new_size;</span>');document.writeln('    <span style="color: #d0d0d0">table-&gt;max_colitions</span> <span style="color: #d0d0d0">=</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">for</span><span style="color: #d0d0d0">(i=</span><span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span> <span style="color: #d0d0d0">i&lt;old_size;</span> <span style="color: #d0d0d0">i++)</span>');document.writeln('    <span style="color: #d0d0d0">{</span>');document.writeln('        <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">old_table[i].list;</span>');document.writeln('        <span style="color: #6ab825; font-weight: normal">while</span><span style="color: #d0d0d0">(node</span> <span style="color: #d0d0d0">!=</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">)</span>');document.writeln('        <span style="color: #d0d0d0">{</span>');document.writeln('            <span style="color: #d0d0d0">hash_insert(table,</span> <span style="color: #d0d0d0">node-&gt;key,</span> <span style="color: #d0d0d0">node-&gt;data);</span>');document.writeln('            <span style="color: #d0d0d0">node_next</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node-&gt;next;</span>');document.writeln('            <span style="color: #d0d0d0">free(node);</span>');document.writeln('            <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node_next;</span>');document.writeln('        <span style="color: #d0d0d0">}</span>');document.writeln('    <span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">free(old_table);</span>');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #447fcf">hash_delete</span><span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*table,</span> <span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #d0d0d0">*key)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">unsigned</span> <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">num_key;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*prev_node;</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">num_key</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;hash_f(key)</span> <span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">table-&gt;size;</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">for</span><span style="color: #d0d0d0">(prev_node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;table[num_key].list;</span>');document.writeln('            <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">!=</span> <span style="color: #24909d">NULL</span> <span style="color: #d0d0d0">&amp;&amp;</span> <span style="color: #d0d0d0">table-&gt;compare(node-&gt;key,</span> <span style="color: #d0d0d0">key)</span> <span style="color: #d0d0d0">!=</span> <span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span>');document.writeln('            <span style="color: #d0d0d0">prev_node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node,</span> <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node-&gt;next);</span>');document.writeln('    ');document.writeln('    <span style="color: #6ab825; font-weight: normal">if</span><span style="color: #d0d0d0">(node</span> <span style="color: #d0d0d0">==</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">)</span>');document.writeln('    <span style="color: #d0d0d0">{</span>');document.writeln('        <span style="color: #6ab825; font-weight: normal">return</span><span style="color: #d0d0d0">;</span>');document.writeln('    <span style="color: #d0d0d0">}</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">else</span> <span style="color: #6ab825; font-weight: normal">if</span><span style="color: #d0d0d0">(prev_node</span> <span style="color: #d0d0d0">==</span> <span style="color: #d0d0d0">node)</span>');document.writeln('    <span style="color: #d0d0d0">{</span>');document.writeln('        <span style="color: #d0d0d0">table-&gt;table[num_key].list</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node-&gt;next;</span>');document.writeln('    <span style="color: #d0d0d0">}</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">else</span>');document.writeln('    <span style="color: #d0d0d0">{</span>');document.writeln('        <span style="color: #d0d0d0">prev_node-&gt;next</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node-&gt;next;</span>');document.writeln('    <span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">table-&gt;destroy_key(node-&gt;key);</span>');document.writeln('    <span style="color: #d0d0d0">table-&gt;destroy_data(node-&gt;data);</span>');document.writeln('    <span style="color: #d0d0d0">free(node);</span>');document.writeln('');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('<span style="color: #6ab825; font-weight: normal">void</span> <span style="color: #447fcf">hash_destroy</span><span style="color: #d0d0d0">(hash_table_t</span> <span style="color: #d0d0d0">*table)</span>');document.writeln('<span style="color: #d0d0d0">{</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*node;</span>');document.writeln('    <span style="color: #d0d0d0">hash_node_t</span> <span style="color: #d0d0d0">*next_node;</span>');document.writeln('    <span style="color: #6ab825; font-weight: normal">int</span> <span style="color: #d0d0d0">i;</span>');document.writeln('');document.writeln('    <span style="color: #6ab825; font-weight: normal">for</span><span style="color: #d0d0d0">(i=</span><span style="color: #3677a9">0</span><span style="color: #d0d0d0">;</span> <span style="color: #d0d0d0">i&lt;table-&gt;size;</span> <span style="color: #d0d0d0">i++)</span>');document.writeln('    <span style="color: #d0d0d0">{</span>');document.writeln('        <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">table-&gt;table[i].list;</span>');document.writeln('        ');document.writeln('        <span style="color: #6ab825; font-weight: normal">while</span><span style="color: #d0d0d0">(node</span> <span style="color: #d0d0d0">!=</span> <span style="color: #24909d">NULL</span><span style="color: #d0d0d0">)</span>');document.writeln('        <span style="color: #d0d0d0">{</span>');document.writeln('            <span style="color: #d0d0d0">next_node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">node-&gt;next;</span>');document.writeln('            <span style="color: #d0d0d0">table-&gt;destroy_key(node-&gt;key);</span>');document.writeln('            <span style="color: #d0d0d0">table-&gt;destroy_data(node-&gt;data);</span>');document.writeln('            <span style="color: #d0d0d0">free(node);</span>');document.writeln('            <span style="color: #d0d0d0">node</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">next_node;</span>');document.writeln('        <span style="color: #d0d0d0">}</span>');document.writeln('    <span style="color: #d0d0d0">}</span>');document.writeln('');document.writeln('    <span style="color: #d0d0d0">free(table-&gt;table);</span>');document.writeln('    <span style="color: #d0d0d0">free(table);</span>');document.writeln('<span style="color: #d0d0d0">}</span>');document.writeln('</pre></div>');document.writeln('');document.writeln('<div style="background-color: #111; color: #D0D0D0; float: right; padding: 5px 10px; -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; font: 11px Arial,Sans-Serif; display: none; position: absolute; bottom: 0; right: 0;" id="snipt-3640">code hosted by <a href="http://snipt.net/aguirrel/hash-implementation" style="color: #0084FF; text-decoration: none;">snipt.net</a></div>');document.writeln('</div>');document.close();