mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-21 20:31:43 +08:00
488 lines
39 KiB
HTML
488 lines
39 KiB
HTML
<!-- HTML header for doxygen 1.12.0-->
|
|
<!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" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.14.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>TheAlgorithms/C++: search/sublist_search.cpp File Reference</title>
|
|
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
|
|
<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>
|
|
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
|
|
<script type="text/javascript">
|
|
DoxygenAwesomeDarkModeToggle.init()
|
|
</script>
|
|
<script type="text/javascript" src="../../clipboard.js"></script>
|
|
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../navtreedata.js"></script>
|
|
<script type="text/javascript" src="../../navtree.js"></script>
|
|
<script type="text/javascript" src="../../cookie.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/javascript">
|
|
window.MathJax = {
|
|
options: {
|
|
ignoreHtmlClass: 'tex2jax_ignore',
|
|
processHtmlClass: 'tex2jax_process'
|
|
},
|
|
loader: {
|
|
load: ['[tex]/ams']
|
|
},
|
|
tex: {
|
|
macros: {},
|
|
packages: ['base','configmacros','ams']
|
|
}
|
|
};
|
|
</script>
|
|
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
|
|
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="../../doxygen-awesome.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 id="projectrow">
|
|
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
|
|
<td id="projectalign">
|
|
<div id="projectname">TheAlgorithms/C++<span id="projectnumber"> 1.0.0</span>
|
|
</div>
|
|
<div id="projectbrief">All the algorithms implemented in C++</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.14.0 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
|
</script>
|
|
<script type="text/javascript">
|
|
$(function() { codefold.init(); });
|
|
</script>
|
|
<script type="text/javascript" src="../../menudata.js"></script>
|
|
<script type="text/javascript" src="../../menu.js"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
initMenu('../../',true,false,'search.php','Search',true);
|
|
$(function() { init_search(); });
|
|
});
|
|
</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">
|
|
$(function(){initNavTree('d5/d45/sublist__search_8cpp.html','../../',''); });
|
|
</script>
|
|
<div id="container">
|
|
<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">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle"><div class="title">sublist_search.cpp File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Implementation of the <a href="https://www.geeksforgeeks.org/sublist-search-search-a-linked-list-in-another-list" target="_blank">Sublist Search Algorithm</a>
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <cassert></code><br />
|
|
<code>#include <cstdint></code><br />
|
|
<code>#include <iostream></code><br />
|
|
<code>#include <vector></code><br />
|
|
</div><div class="textblock"><div class="dynheader">
|
|
Include dependency graph for sublist_search.cpp:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="../../d7/d92/sublist__search_8cpp__incl.svg" width="336" height="111"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
</div>
|
|
<p><a href="../../d5/d45/sublist__search_8cpp_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:search_3A_3Asublist_5Fsearch_3A_3ANode" id="r_search_3A_3Asublist_5Fsearch_3A_3ANode"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">search::sublist_search::Node</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A <a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html" title="A Node structure representing a single link Node in a linked list.">Node</a> structure representing a single link <a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html" title="A Node structure representing a single link Node in a linked list.">Node</a> in a linked list. <a href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html#details">More...</a><br /></td></tr>
|
|
<tr class="memitem:TestCases" id="r_TestCases"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d58/class_test_cases.html">TestCases</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">class encapsulating the necessary test cases <a href="../../d5/d58/class_test_cases.html#details">More...</a><br /></td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-namespaces" class="groupheader"><a id="namespaces" name="namespaces"></a>
|
|
Namespaces</h2></td></tr>
|
|
<tr class="memitem:search" id="r_search"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dca/namespacesearch.html">search</a></td></tr>
|
|
<tr class="memdesc:d9/dca/namespacesearch"><td class="mdescLeft"> </td><td class="mdescRight">for std::assert <br /></td></tr>
|
|
<tr class="memitem:sublist_5Fsearch" id="r_sublist_5Fsearch"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/def/namespacesublist__search.html">sublist_search</a></td></tr>
|
|
<tr class="memdesc:d9/def/namespacesublist__search"><td class="mdescLeft"> </td><td class="mdescRight">Functions for the <a href="https://www.geeksforgeeks.org/sublist-search-search-a-linked-list-in-another-list" target="_blank">Sublist Search</a> implementation. <br /></td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:ad1028bc215281d62e344af99da57fab2" id="r_ad1028bc215281d62e344af99da57fab2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad1028bc215281d62e344af99da57fab2">search::sublist_search::printLinkedList</a> (<a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *start)</td></tr>
|
|
<tr class="memdesc:ad1028bc215281d62e344af99da57fab2"><td class="mdescLeft"> </td><td class="mdescRight">A simple function to print the linked list. <br /></td></tr>
|
|
<tr class="memitem:a70ca8d0267008e09cfa50b4e2ddfbe53" id="r_a70ca8d0267008e09cfa50b4e2ddfbe53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a70ca8d0267008e09cfa50b4e2ddfbe53">search::sublist_search::makeLinkedList</a> (const std::vector< uint64_t > &<a class="el" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>)</td></tr>
|
|
<tr class="memdesc:a70ca8d0267008e09cfa50b4e2ddfbe53"><td class="mdescLeft"> </td><td class="mdescRight">Give a vector of data, it adds each element of vector in the linked list and return the address of head pointer. <br /></td></tr>
|
|
<tr class="memitem:aac16d28231a07fadec189f80937ac10d" id="r_aac16d28231a07fadec189f80937ac10d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aac16d28231a07fadec189f80937ac10d">search::sublist_search::deleteList</a> (<a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *const root)</td></tr>
|
|
<tr class="memitem:a4faee403e2758aaab682ed6622ae218c" id="r_a4faee403e2758aaab682ed6622ae218c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a4faee403e2758aaab682ed6622ae218c">search::sublist_search::sublistSearch</a> (<a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *sublist, <a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *mainList)</td></tr>
|
|
<tr class="memdesc:a4faee403e2758aaab682ed6622ae218c"><td class="mdescLeft"> </td><td class="mdescRight">Main searching function. <br /></td></tr>
|
|
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d" id="r_aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
|
|
<tr class="memdesc:aa8dca7b867074164d5f45b0f3851269d"><td class="mdescLeft"> </td><td class="mdescRight">Self-test implementations. <br /></td></tr>
|
|
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4" id="r_ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
|
|
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft"> </td><td class="mdescRight">Main function. <br /></td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Implementation of the <a href="https://www.geeksforgeeks.org/sublist-search-search-a-linked-list-in-another-list" target="_blank">Sublist Search Algorithm</a> </p>
|
|
<h3 class="doxsection"><a class="anchor" id="autotoc_md108"></a>
|
|
Algorithm</h3>
|
|
<ul>
|
|
<li>Sublist search is used to detect a presence of one list in another list.</li>
|
|
<li>Suppose we have a single-node list (let's say the first list), and we want to ensure that the list is present in another list (let's say the second list), then we can perform the sublist search to find it.</li>
|
|
<li>For instance, the first list contains these elements: 23 -> 30 -> 41, and the second list contains these elements: 10 -> 15 -> 23 -> 30 -> 41 -> 49. At a glance, we see that the first list presents in the second list.</li>
|
|
</ul>
|
|
<h3 class="doxsection"><a class="anchor" id="autotoc_md109"></a>
|
|
Working</h3>
|
|
<ul>
|
|
<li>The sublist search algorithm works by comparing the first element of the first list with the first element of the second list.</li>
|
|
<li>If the two values don't match, it goes to the next element of the second list. It does this until the two values match.</li>
|
|
</ul>
|
|
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/foo290" target="_blank">Nitin Sharma</a> </dd></dl>
|
|
|
|
<p class="definition">Definition in file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
|
|
<a id="aac16d28231a07fadec189f80937ac10d" name="aac16d28231a07fadec189f80937ac10d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aac16d28231a07fadec189f80937ac10d">◆ </a></span>deleteList()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void search::sublist_search::deleteList </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *const</td> <td class="paramname"><span class="paramname"><em>root</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html#l00101">101</a> of file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 101</span> {</div>
|
|
<div class="line"><span class="lineno"> 102</span> <span class="keywordflow">if</span> (root != NULL) {</div>
|
|
<div class="line"><span class="lineno"> 103</span> deleteList(root->next);</div>
|
|
<div class="line"><span class="lineno"> 104</span> <span class="keyword">delete</span> root;</div>
|
|
<div class="line"><span class="lineno"> 105</span> }</div>
|
|
<div class="line"><span class="lineno"> 106</span>}</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="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="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Main function. </p>
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
|
|
<p>< Main list in which sublist is to be searched</p>
|
|
<p>< Sublist to be searched</p>
|
|
<p>< Main list in which sublist is to be searched</p>
|
|
<p>< boolean to check if the sublist exists or not</p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html#l00358">358</a> of file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 358</span> {</div>
|
|
<div class="line"><span class="lineno"> 359</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
|
|
<div class="line"><span class="lineno"> 360</span> </div>
|
|
<div class="line"><span class="lineno"> 361</span> std::vector<uint64_t> mainlistData = {</div>
|
|
<div class="line"><span class="lineno"> 362</span> 2, 5, 6, 7, 8}; </div>
|
|
<div class="line"><span class="lineno"> 363</span> std::vector<uint64_t> sublistData = {6, 8}; </div>
|
|
<div class="line"><span class="lineno"> 364</span> </div>
|
|
<div class="line"><span class="lineno"> 365</span> <a class="code hl_struct" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">search::sublist_search::Node</a> *mainlistLL =</div>
|
|
<div class="line"><span class="lineno"> 366</span> <a class="code hl_function" href="#a70ca8d0267008e09cfa50b4e2ddfbe53">search::sublist_search::makeLinkedList</a>(mainlistData);</div>
|
|
<div class="line"><span class="lineno"> 367</span> <a class="code hl_struct" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">search::sublist_search::Node</a> *sublistLL =</div>
|
|
<div class="line"><span class="lineno"> 368</span> <a class="code hl_function" href="#a70ca8d0267008e09cfa50b4e2ddfbe53">search::sublist_search::makeLinkedList</a>(</div>
|
|
<div class="line"><span class="lineno"> 369</span> sublistData); </div>
|
|
<div class="line"><span class="lineno"> 371</span> </div>
|
|
<div class="line"><span class="lineno"> 372</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="../../d3/d84/word__break_8cpp.html#a1cc9dd6e6190d10a010fdcdfe7a21a81">exists</a> = <a class="code hl_function" href="#a4faee403e2758aaab682ed6622ae218c">search::sublist_search::sublistSearch</a>(</div>
|
|
<div class="line"><span class="lineno"> 373</span> sublistLL,</div>
|
|
<div class="line"><span class="lineno"> 374</span> mainlistLL); </div>
|
|
<div class="line"><span class="lineno"> 375</span> </div>
|
|
<div class="line"><span class="lineno"> 376</span> std::cout << <span class="stringliteral">"Sublist: "</span> << std::endl;</div>
|
|
<div class="line"><span class="lineno"> 377</span> <a class="code hl_function" href="#ad1028bc215281d62e344af99da57fab2">search::sublist_search::printLinkedList</a>(sublistLL);</div>
|
|
<div class="line"><span class="lineno"> 378</span> </div>
|
|
<div class="line"><span class="lineno"> 379</span> std::cout << <span class="stringliteral">"Main list: "</span> << std::endl;</div>
|
|
<div class="line"><span class="lineno"> 380</span> <a class="code hl_function" href="#ad1028bc215281d62e344af99da57fab2">search::sublist_search::printLinkedList</a>(mainlistLL);</div>
|
|
<div class="line"><span class="lineno"> 381</span> std::cout << std::endl;</div>
|
|
<div class="line"><span class="lineno"> 382</span> </div>
|
|
<div class="line"><span class="lineno"> 383</span> <span class="keywordflow">if</span> (exists) {</div>
|
|
<div class="line"><span class="lineno"> 384</span> std::cout << <span class="stringliteral">"[TRUE] - sublist found in main list\n"</span>;</div>
|
|
<div class="line"><span class="lineno"> 385</span> } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><span class="lineno"> 386</span> std::cout << <span class="stringliteral">"[FALSE] - sublist NOT found in main list\n"</span>;</div>
|
|
<div class="line"><span class="lineno"> 387</span> }</div>
|
|
<div class="line"><span class="lineno"> 388</span> </div>
|
|
<div class="line"><span class="lineno"> 389</span> deleteList(mainlistLL);</div>
|
|
<div class="line"><span class="lineno"> 390</span> deleteList(sublistLL);</div>
|
|
<div class="line"><span class="lineno"> 391</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><span class="lineno"> 392</span>}</div>
|
|
<div class="ttc" id="astructsearch_1_1sublist__search_1_1_node_html"><div class="ttname"><a href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">search::sublist_search::Node</a></div><div class="ttdoc">A Node structure representing a single link Node in a linked list.</div><div class="ttdef"><b>Definition</b> <a href="../../d5/d45/sublist__search_8cpp_source.html#l00048">sublist_search.cpp:48</a></div></div>
|
|
<div class="ttc" id="asublist__search_8cpp_html_a4faee403e2758aaab682ed6622ae218c"><div class="ttname"><a href="#a4faee403e2758aaab682ed6622ae218c">search::sublist_search::sublistSearch</a></div><div class="ttdeci">bool sublistSearch(Node *sublist, Node *mainList)</div><div class="ttdoc">Main searching function.</div><div class="ttdef"><b>Definition</b> <a href="../../d5/d45/sublist__search_8cpp_source.html#l00115">sublist_search.cpp:115</a></div></div>
|
|
<div class="ttc" id="asublist__search_8cpp_html_a70ca8d0267008e09cfa50b4e2ddfbe53"><div class="ttname"><a href="#a70ca8d0267008e09cfa50b4e2ddfbe53">search::sublist_search::makeLinkedList</a></div><div class="ttdeci">Node * makeLinkedList(const std::vector< uint64_t > &data)</div><div class="ttdoc">Give a vector of data, it adds each element of vector in the linked list and return the address of he...</div><div class="ttdef"><b>Definition</b> <a href="../../d5/d45/sublist__search_8cpp_source.html#l00074">sublist_search.cpp:74</a></div></div>
|
|
<div class="ttc" id="asublist__search_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="../../d5/d45/sublist__search_8cpp_source.html#l00349">sublist_search.cpp:349</a></div></div>
|
|
<div class="ttc" id="asublist__search_8cpp_html_ad1028bc215281d62e344af99da57fab2"><div class="ttname"><a href="#ad1028bc215281d62e344af99da57fab2">search::sublist_search::printLinkedList</a></div><div class="ttdeci">void printLinkedList(Node *start)</div><div class="ttdoc">A simple function to print the linked list.</div><div class="ttdef"><b>Definition</b> <a href="../../d5/d45/sublist__search_8cpp_source.html#l00058">sublist_search.cpp:58</a></div></div>
|
|
<div class="ttc" id="aword__break_8cpp_html_a1cc9dd6e6190d10a010fdcdfe7a21a81"><div class="ttname"><a href="../../d3/d84/word__break_8cpp.html#a1cc9dd6e6190d10a010fdcdfe7a21a81">dynamic_programming::word_break::exists</a></div><div class="ttdeci">bool exists(const std::string &str, const std::unordered_set< std::string > &strSet)</div><div class="ttdoc">Function that checks if the string passed in param is present in the the unordered_set passed.</div><div class="ttdef"><b>Definition</b> <a href="../../d3/d84/word__break_8cpp_source.html#l00060">word_break.cpp:60</a></div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a70ca8d0267008e09cfa50b4e2ddfbe53" name="a70ca8d0267008e09cfa50b4e2ddfbe53"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a70ca8d0267008e09cfa50b4e2ddfbe53">◆ </a></span>makeLinkedList()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="../../db/d8b/struct_node.html">Node</a> * search::sublist_search::makeLinkedList </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const std::vector< uint64_t > &</td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Give a vector of data, it adds each element of vector in the linked list and return the address of head pointer. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">data</td><td>A vector of "int" containing the data that is supposed to be stored in nodes of linked list. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Node* A head pointer to the linked list. </dd></dl>
|
|
<p>This is used in test cases for rapidly creating linked list with 100+ elements, instead of hard-coding 100 elements in test cases.</p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html#l00074">74</a> of file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 74</span> {</div>
|
|
<div class="line"><span class="lineno"> 77</span> <a class="code hl_struct" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *head = <span class="keyword">nullptr</span>;</div>
|
|
<div class="line"><span class="lineno"> 78</span> <a class="code hl_struct" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *tail = <span class="keyword">nullptr</span>;</div>
|
|
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i : <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
|
|
<div class="line"><span class="lineno"> 80</span> <a class="code hl_struct" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *<a class="code hl_class" href="../../d5/da1/structnode.html">node</a> = <span class="keyword">new</span> <a class="code hl_struct" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a>;</div>
|
|
<div class="line"><span class="lineno"> 81</span> <a class="code hl_class" href="../../d5/da1/structnode.html">node</a>->data = i;</div>
|
|
<div class="line"><span class="lineno"> 82</span> <a class="code hl_class" href="../../d5/da1/structnode.html">node</a>->next = <span class="keyword">nullptr</span>;</div>
|
|
<div class="line"><span class="lineno"> 83</span> <span class="keywordflow">if</span> (head == <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 84</span> head = <a class="code hl_class" href="../../d5/da1/structnode.html">node</a>;</div>
|
|
<div class="line"><span class="lineno"> 85</span> tail = <a class="code hl_class" href="../../d5/da1/structnode.html">node</a>;</div>
|
|
<div class="line"><span class="lineno"> 86</span> } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><span class="lineno"> 87</span> tail-><a class="code hl_variable" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html#afe96e03dd6a404480ab43d1e88363a7a">next</a> = <a class="code hl_class" href="../../d5/da1/structnode.html">node</a>;</div>
|
|
<div class="line"><span class="lineno"> 88</span> tail = tail-><a class="code hl_variable" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html#afe96e03dd6a404480ab43d1e88363a7a">next</a>;</div>
|
|
<div class="line"><span class="lineno"> 89</span> }</div>
|
|
<div class="line"><span class="lineno"> 90</span> }</div>
|
|
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">return</span> head;</div>
|
|
<div class="line"><span class="lineno"> 92</span>}</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> <a href="../../d1/df3/hash__search_8cpp_source.html#l00024">hash_search.cpp:24</a></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> <a href="../../d3/d26/binary__search__tree_8cpp_source.html#l00011">binary_search_tree.cpp:11</a></div></div>
|
|
<div class="ttc" id="astructsearch_1_1sublist__search_1_1_node_html_afe96e03dd6a404480ab43d1e88363a7a"><div class="ttname"><a href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html#afe96e03dd6a404480ab43d1e88363a7a">search::sublist_search::Node::next</a></div><div class="ttdeci">Node * next</div><div class="ttdoc">pointer to the next node</div><div class="ttdef"><b>Definition</b> <a href="../../d5/d45/sublist__search_8cpp_source.html#l00050">sublist_search.cpp:50</a></div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="ad1028bc215281d62e344af99da57fab2" name="ad1028bc215281d62e344af99da57fab2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad1028bc215281d62e344af99da57fab2">◆ </a></span>printLinkedList()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void search::sublist_search::printLinkedList </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *</td> <td class="paramname"><span class="paramname"><em>start</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>A simple function to print the linked list. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">start</td><td>The head of the linked list </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html#l00058">58</a> of file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 58</span> {</div>
|
|
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">while</span> (start != <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 60</span> std::cout << <span class="stringliteral">"->"</span> << start->data;</div>
|
|
<div class="line"><span class="lineno"> 61</span> start = start->next;</div>
|
|
<div class="line"><span class="lineno"> 62</span> }</div>
|
|
<div class="line"><span class="lineno"> 63</span> std::cout << std::endl;</div>
|
|
<div class="line"><span class="lineno"> 64</span>}</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a4faee403e2758aaab682ed6622ae218c" name="a4faee403e2758aaab682ed6622ae218c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4faee403e2758aaab682ed6622ae218c">◆ </a></span>sublistSearch()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool search::sublist_search::sublistSearch </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *</td> <td class="paramname"><span class="paramname"><em>sublist</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html">Node</a> *</td> <td class="paramname"><span class="paramname"><em>mainList</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Main searching function. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">sublist</td><td>A linked list which is supposed to be searched in mainList. </td></tr>
|
|
<tr><td class="paramname">mainList</td><td>A linked list in which sublist will be searched. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if the sublist is found </dd>
|
|
<dd>
|
|
false if the sublist is NOT found </dd></dl>
|
|
<p>Initialize target pointer to the head node of sublist.</p>
|
|
<p>Initialize main pointer to the current node of main list.</p>
|
|
<p>If the data of target node and main node is equal then move to the next node of both lists.</p>
|
|
<p>Is target pointer becomes null that means the target list is been traversed without returning false. Which means the sublist has been found and return ture.</p>
|
|
<p>set the target pointer again to stating point of target list.</p>
|
|
<p>set the main pointer to the next element of the main list and repeat the algo.</p>
|
|
<p>If the main list is exhausted, means sublist does not found, return false</p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html#l00115">115</a> of file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 115</span> {</div>
|
|
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">if</span> (sublist == <span class="keyword">nullptr</span> || mainList == <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><span class="lineno"> 118</span> }</div>
|
|
<div class="line"><span class="lineno"> 119</span></div>
|
|
<div class="line"><span class="lineno"> 121</span> <a class="code hl_class" href="../../db/d8b/struct_node.html">Node</a> *target_ptr = sublist;</div>
|
|
<div class="line"><span class="lineno"> 122</span> </div>
|
|
<div class="line"><span class="lineno"> 123</span> <span class="keywordflow">while</span> (mainList != <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 125</span> <a class="code hl_class" href="../../db/d8b/struct_node.html">Node</a> *main_ptr = mainList;</div>
|
|
<div class="line"><span class="lineno"> 126</span> </div>
|
|
<div class="line"><span class="lineno"> 127</span> <span class="keywordflow">while</span> (target_ptr != <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 128</span> <span class="keywordflow">if</span> (main_ptr == <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 129</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><span class="lineno"> 130</span> </div>
|
|
<div class="line"><span class="lineno"> 131</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (main_ptr->data == target_ptr->data) {</div>
|
|
<div class="line"><span class="lineno"> 134</span> target_ptr = target_ptr->next;</div>
|
|
<div class="line"><span class="lineno"> 135</span> main_ptr = main_ptr->next;</div>
|
|
<div class="line"><span class="lineno"> 136</span> </div>
|
|
<div class="line"><span class="lineno"> 137</span> } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><span class="lineno"> 138</span> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><span class="lineno"> 139</span> }</div>
|
|
<div class="line"><span class="lineno"> 140</span> }</div>
|
|
<div class="line"><span class="lineno"> 141</span> </div>
|
|
<div class="line"><span class="lineno"> 142</span> <span class="keywordflow">if</span> (target_ptr == <span class="keyword">nullptr</span>) {</div>
|
|
<div class="line"><span class="lineno"> 146</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><span class="lineno"> 147</span> }</div>
|
|
<div class="line"><span class="lineno"> 148</span></div>
|
|
<div class="line"><span class="lineno"> 150</span> target_ptr = sublist;</div>
|
|
<div class="line"><span class="lineno"> 151</span></div>
|
|
<div class="line"><span class="lineno"> 154</span> mainList = mainList-><a class="code hl_variable" href="../../da/d61/structsearch_1_1sublist__search_1_1_node.html#afe96e03dd6a404480ab43d1e88363a7a">next</a>;</div>
|
|
<div class="line"><span class="lineno"> 155</span> }</div>
|
|
<div class="line"><span class="lineno"> 156</span></div>
|
|
<div class="line"><span class="lineno"> 159</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><span class="lineno"> 160</span>}</div>
|
|
<div class="ttc" id="astruct_node_html"><div class="ttname"><a href="../../db/d8b/struct_node.html">Node</a></div><div class="ttdef"><b>Definition</b> <a href="../../d3/dce/linkedlist__implentation__usingarray_8cpp_source.html#l00014">linkedlist_implentation_usingarray.cpp:14</a></div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">◆ </a></span>test()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void test </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Self-test implementations. </p>
|
|
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html#l00349">349</a> of file <a class="el" href="../../d5/d45/sublist__search_8cpp_source.html">sublist_search.cpp</a>.</p>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 349</span> {</div>
|
|
<div class="line"><span class="lineno"> 350</span> <a class="code hl_class" href="../../d5/d58/class_test_cases.html">TestCases</a> tc;</div>
|
|
<div class="line"><span class="lineno"> 351</span> tc.<a class="code hl_function" href="../../d5/d58/class_test_cases.html#aeabea90c02f9159e4a784bbf736e1e23">runTests</a>();</div>
|
|
<div class="line"><span class="lineno"> 352</span>}</div>
|
|
<div class="ttc" id="aclass_test_cases_html"><div class="ttname"><a href="../../d5/d58/class_test_cases.html">TestCases</a></div><div class="ttdoc">class encapsulating the necessary test cases</div><div class="ttdef"><b>Definition</b> <a href="../../d4/d32/inorder__successor__of__bst_8cpp_source.html#l00225">inorder_successor_of_bst.cpp:225</a></div></div>
|
|
<div class="ttc" id="aclass_test_cases_html_aeabea90c02f9159e4a784bbf736e1e23"><div class="ttname"><a href="../../d5/d58/class_test_cases.html#aeabea90c02f9159e4a784bbf736e1e23">TestCases::runTests</a></div><div class="ttdeci">void runTests()</div><div class="ttdoc">Executes test cases.</div><div class="ttdef"><b>Definition</b> <a href="../../d4/d32/inorder__successor__of__bst_8cpp_source.html#l00243">inorder_successor_of_bst.cpp:243</a></div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<div id="page-nav" class="page-nav-panel">
|
|
<div id="page-nav-resize-handle"></div>
|
|
<div id="page-nav-tree">
|
|
<div id="page-nav-contents">
|
|
</div><!-- page-nav-contents -->
|
|
</div><!-- page-nav-tree -->
|
|
</div><!-- page-nav -->
|
|
</div><!-- container -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a href="../../dir_19b2bf9199a15c634a08b1ede1dd896a.html">search</a></li><li class="navelem"><a href="../../d5/d45/sublist__search_8cpp.html">sublist_search.cpp</a></li>
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|