\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{TowChow23} \pdfinfo{ /Title (data-structures.pdf) /Creator (Cheatography) /Author (TowChow23) /Subject (Data Structures 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}{000000} \definecolor{LightBackground}{HTML}{F7F7F7} \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{Data Structures Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{TowChow23} via \textcolor{DarkBackground}{\uline{cheatography.com/28831/cs/8484/}}} \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}TowChow23 \\ \uline{cheatography.com/towchow23} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 23rd June, 2016.\\ Updated 23rd June, 2016.\\ 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}{Push}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public void push(T newEntry) \{ \newline // Add to beginning of chain: \newline try \{ \newline LinkedStack.Node newNode = new \seqsplit{LinkedStack.Node(newEntry);} \newline \newline newNode.next = firstNode; // Make new node reference rest of chain \newline \newline // (firstNode is null if chain is empty) \newline firstNode = newNode; // New node is at beginning of chain \newline numberOfEntries++; \newline \} catch (OutOfMemoryError e) \{ \newline throw new IllegalStateException(); \newline \} \newline //return true; \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}{Pop}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{@Override \newline public T pop() \{ \newline T result = null; \newline \newline if (firstNode != null) \{ \newline result = firstNode.data; \newline firstNode = firstNode.next; // Remove first node from chain \newline numberOfEntries-{}-; \newline \} else \{ \newline throw new \seqsplit{NoSuchElementException();} \newline \} \newline return result; \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}{Top}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public T top() \{ \newline if (firstNode != null) \{ \newline return firstNode.data; \newline \} \newline throw new \seqsplit{NoSuchElementException("Stack} is Empty"); \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}{Induction Proofs}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{5.377cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/towchow23_1466651147_jasondias_1445380086_Screen Shot 2015-10-20 at 6.28.15 PM.png}}} \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}{Recursive Fern}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public void drawFern(double x, double y, double angle, double size) \{ \newline if (size \textgreater{} 1.0) \{ // STOP if size \textless{}= 1.0! \newline double{[}{]} end; \newline double length = size {\emph{ 0.5; \newline end = drawStem(x, y, angle, length); // private method \newline double smaller = size }} 0.5; // SMALLER! \newline drawFern(end{[}0{]}, end{[}1{]}, angle+60, smaller); \newline drawFern(end{[}0{]}, end{[}1{]}, angle, smaller); \newline drawFern(end{[}0{]}, end{[}1{]}, angle-60, smaller); \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}{Recursive Binary}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public static \textless{}T\textgreater{} int binaryFind(Comparable\textless{}T\textgreater{} item, T{[}{]} v, int lo, int hi) \{ \newline if (lo \textgreater{} hi) \{ return -1; \} \newline int mid = lo + (hi - lo) / 2; \newline if (item.compareTo(v{[}mid{]}) \textless{} 0) \{ \newline return binaryFind(item, v, lo, mid - 1); \newline \} else if (item.compareTo(v{[}mid{]}) \textgreater{} 0) \{ \newline return binaryFind(item, v, mid+1, hi); \newline \} else \{ return mid; \} // found it! \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}{Selection Sort}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public static \textless{}T extends Comparable\textless{}? super T\textgreater{}\textgreater{} \newline void selectionSort(T{[}{]} a) \{ \newline for (int i = 0; i \textless{} a.length - 1; ++i) \{ \newline int minPos = i; \newline for (int j = i + 1; j \textless{} a.length; j++) \{ \newline if (a{[}j{]}.compareTo(a{[}minPos{]}) \textless{} 0) \{ \newline minPos = j; \newline \} \newline \} \newline T temp = a{[}minPos{]}; \newline a{[}minPos{]} = a{[}i{]}; \newline a{[}i{]} = temp; \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}{Shell Sort}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public static \textless{}T extends Comparable\textless{}? super T\textgreater{}\textgreater{} \newline void shellSort(T{[}{]} a) \{ \newline int gap = a.length / 2; \newline while (gap \textgreater{}= 1) \{ \newline if (gap \% 2 == 0) ++gap; \newline for (int i = gap; i \textless{} a.length; ++i) \{ \newline int p = i; \newline T temp = a{[}p{]}; \newline while (p \textgreater{}= gap \&\& a{[}p-gap{]}.compareTo(temp) \textgreater{} 0) \{ \newline a{[}p{]} = a{[}p-gap{]}; \newline p -= gap; \newline \} \newline a{[}p{]} = temp; \newline \} \newline gap /= 2; \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}{Insertion}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public static \textless{}T extends Comparable\textless{}? super T\textgreater{}\textgreater{} \newline void insertionSort(T{[}{]} a) \{ \newline for (int i = 0; i \textless{} a.length - 1; ++i) \{ \newline int p = i + 1; \newline T temp = a{[}p{]}; \newline while (p \textgreater{} 0 \&\& a{[}p-1{]}.compareTo(temp) \textgreater{} 0) \{ \newline a{[}p{]} = a{[}p-1{]}; \newline -{}-p; \newline \} \newline if (p \textgreater{} 0) // count the last a{[}p-1{]} comparison \newline a{[}p{]} = temp; \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}