\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{BearTeddy} \pdfinfo{ /Title (linked-list-and-hash-table.pdf) /Creator (Cheatography) /Author (BearTeddy) /Subject (Linked List and Hash Table Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Linked List and Hash Table Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{BearTeddy} via \textcolor{DarkBackground}{\uline{cheatography.com/84248/cs/19911/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}BearTeddy \\ \uline{cheatography.com/bearteddy} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 21st June, 2019.\\ Updated 21st June, 2019.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{InsertHead LL}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{template \textless{}class T\textgreater{} \newline void List\textless{}T\textgreater{}::insertHead(T n) \newline \{ \newline ListNode\textless{}T\textgreater{} *aNewNode = new ListNode\textless{}T\textgreater{}(n); \newline aNewNode-\textgreater{}\_next = \_head; \newline \_head = aNewNode; \newline \_size++; \newline \};} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Remove Head LL}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{template \textless{}class T\textgreater{} \newline void List\textless{}T\textgreater{}::removeHead() \newline \{ \newline if (\_size \textgreater{} 0) \{ \newline ListNode\textless{}T\textgreater{} *temp = \_head; \newline \_head = \_head-\textgreater{}\_next; \newline delete temp; \newline \_size-{}-; \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Iterative Print LL}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{template \textless{}class T\textgreater{} \newline void List\textless{}T\textgreater{}::print(bool withNL) \{ \newline ListNode\textless{}T\textgreater{} *temp = \_head; \newline while (temp) \{ \newline cout \textless{}\textless{} temp-\textgreater{}\_item; \newline if (withNL) \newline cout \textless{}\textless{} endl; \newline else \newline cout \textless{}\textless{} " "; \newline temp = temp-\textgreater{}\_next; \newline \} \newline cout \textless{}\textless{} endl; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Exist LL}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{template \textless{}class T\textgreater{} \newline bool List\textless{}T\textgreater{}::exist(T n) \newline \{ \newline for (ListNode\textless{}T\textgreater{}* ptr = \_head; ptr; ptr = ptr-\textgreater{}\_next) \{ \newline if (ptr-\textgreater{}\_item == n) \newline \{return true;\} \newline \} \newline return false; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{ReverseOP LL}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{template \textless{}class T\textgreater{} \newline void List\textless{}T\textgreater{}::reverseOp() \{ \newline ListNode\textless{}T\textgreater{} {\emph{previous = NULL; //start from NULL \newline ListNode\textless{}T\textgreater{} }}current = \_head; \newline ListNode\textless{}T\textgreater{} *next; \newline while (current != NULL) \{ \newline next = current-\textgreater{}\_next; \newline current-\textgreater{}\_next = previous; \newline previous = current; \newline current = next; \newline \} \newline \_head = previous; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Extract Max LL}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{template \textless{}class T\textgreater{} \newline T List\textless{}T\textgreater{}::extractMax() \newline \{ \newline if (\_head != NULL) \{ \newline ListNode\textless{}T\textgreater{}{\emph{ largest = \_head; \newline ListNode\textless{}T\textgreater{}}} location = \_head; \newline T max = largest-\textgreater{}\_item; // \newline //allocating the node before the largest. \newline for (ListNode\textless{}T\textgreater{}* ptr = \_head; ptr; ptr = ptr-\textgreater{}\_next) \{ \newline if (ptr-\textgreater{}\_next != NULL) \{ \newline if (ptr-\textgreater{}\_next-\textgreater{}\_item \textgreater{} largest-\textgreater{}\_item) \{ \newline largest = ptr-\textgreater{}\_next; \newline location = ptr; \newline max = largest-\textgreater{}\_item; \newline \} \newline \} \newline \} \newline // removing and joining \newline if (largest == \_head) \{ \newline \_head = largest-\textgreater{}\_next; \newline delete largest; \newline \_size-{}-; \newline \} \newline else \{ \newline location-\textgreater{}\_next = largest-\textgreater{}\_next; \newline delete largest; \newline \_size-{}-; \newline \} \newline return max; \newline \} \newline return T(); \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Operator Overloading}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\#include \textless{}iostream\textgreater{} \newline using namespace std; \newline class Cal \{ \newline public: \newline static int add(int a,int b)\{ \newline return a + b; \newline \} \newline static int add(int a, int b, int c) \newline \{ \newline return a + b + c; \newline \} \newline \}; \newline int main(void) \{ \newline Cal C; // class object declaration. \newline cout\textless{}\textless{}C.add(10, 20)\textless{}\textless{}endl; \newline cout\textless{}\textless{}C.add(12, 20, 23); \newline return 0; \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Hash Insert}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{hash-insert(key, data) \newline int i = 1; // num of collisions \newline while (i \textless{}= m) \{ // Try every bucket \newline int bucket = h(key, i); \newline if (T{[}bucket{]} == null)\{ // Found an empty bucket \newline T{[}bucket{]} = \{key, data\}; // Insert key/data \newline return success; // Return \newline \} \newline i++; \newline \} \newline HandeError(); // Table full!} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Hash Search}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{hash-search(key) \newline int i = 1; \newline while (i \textless{}= m) \{ \newline int bucket = h(key, i); \newline if (T{[}bucket{]} == null) // Empty bucket! \newline return key-not-found; \newline if (T{[}bucket{]}.key == key) // Full bucket. \newline return T{[}bucket{]}.data; \newline i++; \newline \} \newline return key-not-found; // Exhausted entire table} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Quick Sort}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{int partition (int arr{[}{]}, int low, int high) \newline \{ \newline int pivot = arr{[}high{]}; // pivot \newline int i = (low - 1); // Index of smaller element \newline \newline for (int j = low; j \textless{}= high - 1; j++) \newline \{ \newline // If current element is smaller than or \newline // equal to pivot \newline if (arr{[}j{]} \textless{}= pivot) \newline \{ \newline i++; // increment index of smaller element \newline swap(\&arr{[}i{]}, \&arr{[}j{]}); \newline \} \newline \} \newline swap(\&arr{[}i + 1{]}, \&arr{[}high{]}); \newline return (i + 1); \newline \} \newline \newline /{\emph{ The main function that implements QuickSort \newline arr{[}{]} -{}-\textgreater{} Array to be sorted, \newline low -{}-\textgreater{} Starting index, \newline high -{}-\textgreater{} Ending index }}/ \newline void quickSort(int arr{[}{]}, int low, int high) \newline \{ \newline if (low \textless{} high) \newline \{ \newline /{\emph{ pi is partitioning index, arr{[}p{]} is now \newline at right place }}/ \newline int pi = partition(arr, low, high); \newline \newline // Separately sort elements before \newline // partition and after partition \newline quickSort(arr, low, pi - 1); \newline quickSort(arr, pi + 1, high); \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}