mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-21 20:31:43 +08:00
407 lines
34 KiB
HTML
407 lines
34 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.18"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>Algorithms_in_C++: search/hash_search.cpp File Reference</title>
|
|
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../jquery.js"></script>
|
|
<script type="text/javascript" src="../../dynsections.js"></script>
|
|
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../resize.js"></script>
|
|
<script type="text/javascript" src="../../navtreedata.js"></script>
|
|
<script type="text/javascript" src="../../navtree.js"></script>
|
|
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
|
<script type="text/javascript" src="../../search/search.js"></script>
|
|
<script type="text/x-mathjax-config">
|
|
MathJax.Hub.Config({
|
|
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
|
|
jax: ["input/TeX","output/HTML-CSS"],
|
|
});
|
|
</script>
|
|
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
|
|
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">Algorithms_in_C++
|
|
 <span id="projectnumber">1.0.0</span>
|
|
</div>
|
|
<div id="projectbrief">Set of algorithms implemented in C++.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.18 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="../../menudata.js"></script>
|
|
<script type="text/javascript" src="../../menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('../../',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('d1/df3/hash__search_8cpp.html','../../'); initResizable(); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#typedef-members">Typedefs</a> |
|
|
<a href="#func-members">Functions</a> |
|
|
<a href="#var-members">Variables</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">hash_search.cpp File Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Hash Search Algorithm - Best Time Complexity Ω(1)
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <cstdlib></code><br />
|
|
<code>#include <iostream></code><br />
|
|
</div><div class="textblock"><div class="dynheader">
|
|
Include dependency graph for hash_search.cpp:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d3/d30/hash__search_8cpp__incl.svg" width="175" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
</div><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d10/structlist.html">list</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a392fb874e547e582e9c66a08a1f23326"><td class="memItemLeft" align="right" valign="top"><a id="a392fb874e547e582e9c66a08a1f23326"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#a392fb874e547e582e9c66a08a1f23326">MAX</a>   6</td></tr>
|
|
<tr class="memdesc:a392fb874e547e582e9c66a08a1f23326"><td class="mdescLeft"> </td><td class="mdescRight">Determines how much data. <br /></td></tr>
|
|
<tr class="separator:a392fb874e547e582e9c66a08a1f23326"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a77c722016053a1d484aa177ce205b367"><td class="memItemLeft" align="right" valign="top"><a id="a77c722016053a1d484aa177ce205b367"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#a77c722016053a1d484aa177ce205b367">HASHMAX</a>   5</td></tr>
|
|
<tr class="memdesc:a77c722016053a1d484aa177ce205b367"><td class="mdescLeft"> </td><td class="mdescRight">Determines the length of the hash table. <br /></td></tr>
|
|
<tr class="separator:a77c722016053a1d484aa177ce205b367"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
|
Typedefs</h2></td></tr>
|
|
<tr class="memitem:a8ca8dcb494104d273679e219e53d0555"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="../../d8/d10/structlist.html">list</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#a8ca8dcb494104d273679e219e53d0555">node</a></td></tr>
|
|
<tr class="separator:a8ca8dcb494104d273679e219e53d0555"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad6fcd983304f85afa199d97a9b0ca9f6"><td class="memItemLeft" align="right" valign="top"><a id="ad6fcd983304f85afa199d97a9b0ca9f6"></a>
|
|
typedef struct <a class="el" href="../../d8/d10/structlist.html">list</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#ad6fcd983304f85afa199d97a9b0ca9f6">link</a></td></tr>
|
|
<tr class="memdesc:ad6fcd983304f85afa199d97a9b0ca9f6"><td class="mdescLeft"> </td><td class="mdescRight">pointer to nodes <br /></td></tr>
|
|
<tr class="separator:ad6fcd983304f85afa199d97a9b0ca9f6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a566eaf0ffafd50bc61e644561fd27001"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#a566eaf0ffafd50bc61e644561fd27001">h</a> (int key)</td></tr>
|
|
<tr class="separator:a566eaf0ffafd50bc61e644561fd27001"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad0831425f1389166a9518f422d0c6ec5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#ad0831425f1389166a9518f422d0c6ec5">create_list</a> (int key)</td></tr>
|
|
<tr class="separator:ad0831425f1389166a9518f422d0c6ec5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a36ea13c16028f18ef2d5ff47f3fda7a2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#a36ea13c16028f18ef2d5ff47f3fda7a2">hash_search</a> (int key, int *counter)</td></tr>
|
|
<tr class="separator:a36ea13c16028f18ef2d5ff47f3fda7a2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
|
|
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
|
|
Variables</h2></td></tr>
|
|
<tr class="memitem:a6e1a77282bc65ad359d753d25df23243"><td class="memItemLeft" align="right" valign="top"><a id="a6e1a77282bc65ad359d753d25df23243"></a>
|
|
int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a> [<a class="el" href="../../d4/d32/fibonacci__fast_8cpp.html#a692ac7187ee88621a9f78fca78ec498d">MAX</a>] = {1, 10, 15, 5, 8, 7}</td></tr>
|
|
<tr class="memdesc:a6e1a77282bc65ad359d753d25df23243"><td class="mdescLeft"> </td><td class="mdescRight">test data <br /></td></tr>
|
|
<tr class="separator:a6e1a77282bc65ad359d753d25df23243"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af413b1740073db54796642b0ab814d6d"><td class="memItemLeft" align="right" valign="top"><a id="af413b1740073db54796642b0ab814d6d"></a>
|
|
<a class="el" href="../../d5/da1/structnode.html">node</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a> [<a class="el" href="../../d1/df3/hash__search_8cpp.html#a77c722016053a1d484aa177ce205b367">HASHMAX</a>]</td></tr>
|
|
<tr class="memdesc:af413b1740073db54796642b0ab814d6d"><td class="mdescLeft"> </td><td class="mdescRight">array of nodes <br /></td></tr>
|
|
<tr class="separator:af413b1740073db54796642b0ab814d6d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Hash Search Algorithm - Best Time Complexity Ω(1) </p>
|
|
<dl class="section copyright"><dt>Copyright</dt><dd>2020 Arctic2333</dd></dl>
|
|
<p>In this algorithm, we use the method of division and reservation remainder to construct the hash function, and use the method of chain address to solve the conflict, that is, we link a chain list after the data, and store all the records whose keywords are synonyms in the same linear chain list.</p>
|
|
<dl class="section warning"><dt>Warning</dt><dd>This program is only for educational purposes. It has serious flaws in implementation with regards to memory management resulting in large amounts of memory leaks. </dd></dl>
|
|
<dl class="todo"><dt><b><a class="el" href="../../dd/da0/todo.html#_todo000007">Todo:</a></b></dt><dd>fix the program for memory leaks and better structure in C++ and not C fashion </dd></dl>
|
|
</div><h2 class="groupheader">Typedef Documentation</h2>
|
|
<a id="a8ca8dcb494104d273679e219e53d0555"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8ca8dcb494104d273679e219e53d0555">◆ </a></span>node</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">typedef struct <a class="el" href="../../d8/d10/structlist.html">list</a> <a class="el" href="../../d5/da1/structnode.html">node</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>a one-way linked list define node as one item list </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="ad0831425f1389166a9518f422d0c6ec5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad0831425f1389166a9518f422d0c6ec5">◆ </a></span>create_list()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void create_list </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>key</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>The same after the remainder will be added after the same hash header To avoid conflict, zipper method is used Insert elements into the linked list in the header </p><dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>key to add to list </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section warning"><dt>Warning</dt><dd>dynamic memory allocated to <code>n</code> never gets freed. </dd></dl>
|
|
<dl class="todo"><dt><b><a class="el" href="../../dd/da0/todo.html#_todo000008">Todo:</a></b></dt><dd>fix memory leak </dd></dl>
|
|
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  { <span class="comment">// Construct hash table</span></div>
|
|
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/list.html">link</a> p, n;</div>
|
|
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">int</span> index;</div>
|
|
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  n = (<a class="code" href="../../d1/df3/hash__search_8cpp.html#ad6fcd983304f85afa199d97a9b0ca9f6">link</a>)<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/c/malloc.html">malloc</a>(<span class="keyword">sizeof</span>(<a class="code" href="../../d5/da1/structnode.html">node</a>));</div>
|
|
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  n->key = key;</div>
|
|
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  n->next = NULL;</div>
|
|
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  index = <a class="code" href="../../d1/df3/hash__search_8cpp.html#a566eaf0ffafd50bc61e644561fd27001">h</a>(key);</div>
|
|
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  p = <a class="code" href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a>[index].next;</div>
|
|
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (p != NULL) {</div>
|
|
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  n->next = p;</div>
|
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a>[index].next = n;</div>
|
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a>[index].next = n;</div>
|
|
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div>
|
|
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/df3/hash__search_8cpp_ad0831425f1389166a9518f422d0c6ec5_cgraph.svg" width="180" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a566eaf0ffafd50bc61e644561fd27001"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a566eaf0ffafd50bc61e644561fd27001">◆ </a></span>h()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int h </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>key</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Mode of hash detection : Division method </p><dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>to hash </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>hash value for <code>key</code> </dd></dl>
|
|
<div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> { <span class="keywordflow">return</span> key % <a class="code" href="../../d1/df3/hash__search_8cpp.html#a77c722016053a1d484aa177ce205b367">HASHMAX</a>; }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a36ea13c16028f18ef2d5ff47f3fda7a2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a36ea13c16028f18ef2d5ff47f3fda7a2">◆ </a></span>hash_search()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int hash_search </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"><em>key</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"><em>counter</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Input the key to be searched, and get the hash header position through the H (int key) function, then one-dimensional linear search. If found </p><dl class="section return"><dt>Returns</dt><dd>element depth and number of searches If not found </dd>
|
|
<dd>
|
|
-1 </dd></dl>
|
|
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  { <span class="comment">// Hash lookup function</span></div>
|
|
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/list.html">link</a> pointer;</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> index;</div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
|
|
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  *counter = 0;</div>
|
|
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  index = <a class="code" href="../../d1/df3/hash__search_8cpp.html#a566eaf0ffafd50bc61e644561fd27001">h</a>(key);</div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  pointer = <a class="code" href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a>[index].next;</div>
|
|
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div>
|
|
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"data["</span> << index << <span class="stringliteral">"]:"</span>;</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
|
|
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">while</span> (pointer != NULL) {</div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  counter[0]++;</div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"data["</span> << pointer->key << <span class="stringliteral">"]:"</span>;</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (pointer->key == key)</div>
|
|
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> 1;</div>
|
|
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">else</span></div>
|
|
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  pointer = pointer->next;</div>
|
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div>
|
|
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div>
|
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/df3/hash__search_8cpp_a36ea13c16028f18ef2d5ff47f3fda7a2_cgraph.svg" width="194" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">◆ </a></span>main()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int main </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>main function </p>
|
|
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div>
|
|
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/list.html">link</a> p;</div>
|
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">int</span> key, index, i, counter; <span class="comment">// Key is the value to be found</span></div>
|
|
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  index = 0;</div>
|
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  </div>
|
|
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// You can write the input mode here</span></div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">while</span> (index < <a class="code" href="../../d1/df3/hash__search_8cpp.html#a392fb874e547e582e9c66a08a1f23326">MAX</a>) { <span class="comment">// Construct hash table</span></div>
|
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="../../d1/df3/hash__search_8cpp.html#ad0831425f1389166a9518f422d0c6ec5">create_list</a>(<a class="code" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>[index]);</div>
|
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  index++;</div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div>
|
|
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="../../d1/df3/hash__search_8cpp.html#a77c722016053a1d484aa177ce205b367">HASHMAX</a>; i++) { <span class="comment">// Output hash table</span></div>
|
|
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"hashtab ["</span> << i << <span class="stringliteral">"]\n"</span>;</div>
|
|
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div>
|
|
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  p = <a class="code" href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a>[i].next;</div>
|
|
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div>
|
|
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">while</span> (p != NULL) {</div>
|
|
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"please int key:"</span>;</div>
|
|
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (p->key > 0)</div>
|
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"["</span> << p->key << <span class="stringliteral">"]"</span>;</div>
|
|
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  p = p->next;</div>
|
|
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div>
|
|
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div>
|
|
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div>
|
|
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">while</span> (key != -1) {</div>
|
|
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// You can write the input mode here</span></div>
|
|
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// test key = 10</span></div>
|
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  key = 10;</div>
|
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d1/df3/hash__search_8cpp.html#a36ea13c16028f18ef2d5ff47f3fda7a2">hash_search</a>(key, &counter))</div>
|
|
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"search time = "</span> << counter << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">else</span></div>
|
|
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"no found!\n"</span>;</div>
|
|
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  key = -1; <span class="comment">// Exit test</span></div>
|
|
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">/* The test sample is returned as:</span></div>
|
|
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment"> * data[0]:data[5]:data[15]:data[10]:search time = 3 The search is</span></div>
|
|
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment"> * successful. There are 10 in this set of data */</span></div>
|
|
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div>
|
|
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div>
|
|
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/df3/hash__search_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="292" height="139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<div class="ttc" id="ahash__search_8cpp_html_a36ea13c16028f18ef2d5ff47f3fda7a2"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a36ea13c16028f18ef2d5ff47f3fda7a2">hash_search</a></div><div class="ttdeci">int hash_search(int key, int *counter)</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:76</div></div>
|
|
<div class="ttc" id="alist_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/list.html">std::list</a></div><div class="ttdoc">STL class.</div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_a77c722016053a1d484aa177ce205b367"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a77c722016053a1d484aa177ce205b367">HASHMAX</a></div><div class="ttdeci">#define HASHMAX</div><div class="ttdoc">Determines the length of the hash table.</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:22</div></div>
|
|
<div class="ttc" id="astructnode_html"><div class="ttname"><a href="../../d5/da1/structnode.html">node</a></div><div class="ttdef"><b>Definition:</b> avltree.cpp:13</div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_a392fb874e547e582e9c66a08a1f23326"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a392fb874e547e582e9c66a08a1f23326">MAX</a></div><div class="ttdeci">#define MAX</div><div class="ttdoc">Determines how much data.</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:21</div></div>
|
|
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_a566eaf0ffafd50bc61e644561fd27001"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a566eaf0ffafd50bc61e644561fd27001">h</a></div><div class="ttdeci">int h(int key)</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:45</div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_ad6fcd983304f85afa199d97a9b0ca9f6"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#ad6fcd983304f85afa199d97a9b0ca9f6">link</a></div><div class="ttdeci">struct list * link</div><div class="ttdoc">pointer to nodes</div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_af413b1740073db54796642b0ab814d6d"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#af413b1740073db54796642b0ab814d6d">hashtab</a></div><div class="ttdeci">node hashtab[HASHMAX]</div><div class="ttdoc">array of nodes</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:35</div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_a6e1a77282bc65ad359d753d25df23243"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a></div><div class="ttdeci">int data[MAX]</div><div class="ttdoc">test data</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:24</div></div>
|
|
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
|
|
<div class="ttc" id="ahash__search_8cpp_html_ad0831425f1389166a9518f422d0c6ec5"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#ad0831425f1389166a9518f422d0c6ec5">create_list</a></div><div class="ttdeci">void create_list(int key)</div><div class="ttdef"><b>Definition:</b> hash_search.cpp:55</div></div>
|
|
<div class="ttc" id="amalloc_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/c/malloc.html">std::malloc</a></div><div class="ttdeci">T malloc(T... args)</div></div>
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="../../dir_19b2bf9199a15c634a08b1ede1dd896a.html">search</a></li><li class="navelem"><a class="el" href="../../d1/df3/hash__search_8cpp.html">hash_search.cpp</a></li>
|
|
<li class="footer">Generated on Fri Jun 19 2020 16:06:44 for Algorithms_in_C++ by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.18 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|