\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{emilyle1104} \pdfinfo{ /Title (jtmybf.pdf) /Creator (Cheatography) /Author (emilyle1104) /Subject (jtmybf 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{jtmybf Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{emilyle1104} via \textcolor{DarkBackground}{\uline{cheatography.com/197027/cs/43590/}}} \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}emilyle1104 \\ \uline{cheatography.com/emilyle1104} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 7th June, 2024.\\ 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}{linked list các thứ huhuhuh}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\#include \textless{}iostream\textgreater{} \newline \#include \textless{}string\textgreater{} \newline \#include \textless{}fstream\textgreater{} \newline using namespace std; \newline struct Passenger\{ \newline int age; \newline string date; // dd/mm/yyyy \newline float weight; \newline \}; \newline struct PaxNode\{ \newline Passenger data; \newline PaxNode{\emph{ next; \newline \}; \newline struct PaxList\{ \newline PaxNode}} head; \newline PaxNode{\emph{ tail; \newline \}; \newline void print2D(Passenger{\bf{ p, int m, int n) \newline \{ \newline for(int i = 0; i \textless{} m; ++i) \newline \{ \newline for(int j = 0; j \textless{} n; ++j) \newline \{ \newline cout \textless{}\textless{} p{[}i{]}{[}j{]}.age \textless{}\textless{} " " \textless{}\textless{} p{[}i{]}{[}j{]}.date \textless{}\textless{} " " \textless{}\textless{} p{[}i{]}{[}j{]}.weight \textless{}\textless{} endl; \newline \} \newline \} \newline \} \newline \newline Passenger}}}} readFile(string filename, int \&p, int \&m, int \&n) \newline \{ \newline ifstream fin; \newline fin.open(filename); \newline if(!fin.is\_open()) \newline \{ \newline cout \textless{}\textless{} "cannot read file"; \newline return nullptr; \newline \} \newline fin \textgreater{}\textgreater{} p \textgreater{}\textgreater{} m \textgreater{}\textgreater{} n; \newline fin.ignore(); \newline string tmp; \newline Passenger {\bf{{\emph{a; \newline a = new Passenger}} {[}p{]}; \newline for(int i = 0; i \textless{} p; ++i) \newline \{ \newline a{[}i{]} = new Passenger}}{[}m{]}; \newline for(int j = 0; j \textless{} m; ++j) \newline \{ \newline a{[}i{]}{[}j{]} = new Passenger{[}n{]}; \newline for(int k = 0; k \textless{} n; ++k) \newline \{ \newline getline(fin, tmp, ' '); \newline a{[}i{]}{[}j{]}{[}k{]}.age = stoi(tmp); \newline getline(fin, tmp, ' '); \newline a{[}i{]}{[}j{]}{[}k{]}.date = tmp; \newline getline(fin, tmp); \newline a{[}i{]}{[}j{]}{[}k{]}.weight = stof(tmp); \newline \} \newline \} \newline \} \newline return a; \newline \} \newline void print3D(Passenger{\bf{{\emph{ P, int p, int m, int n) \newline \{ \newline for(int i = 0; i \textless{} p; ++i) \newline \{ \newline for(int j = 0; j \textless{} m; ++j) \newline \{ \newline for(int k = 0; k \textless{} n; ++k) \newline \{ \newline cout \textless{}\textless{} P{[}i{]}{[}j{]}{[}k{]}.age \textless{}\textless{} " " \textless{}\textless{} P{[}i{]}{[}j{]}{[}k{]}.date \textless{}\textless{} " " \textless{}\textless{} P{[}i{]}{[}j{]}{[}k{]}.weight \textless{}\textless{} endl; \newline \} \newline \newline \} \newline \} \newline \} \newline Passenger}} findMinWeight(Passenger{\bf{}} P, int p, int m, int n, int x, int y) \newline \{ \newline Passenger }}ans; \newline ans = new Passenger{\emph{{[}p{]}; \newline for(int i = 0; i \textless{} p; ++i) \newline \{ \newline ans{[}i{]} = new Passenger{[}m{]}; \newline for(int j = 0; j \textless{} m; ++j) \newline \{ \newline ans{[}i{]}{[}j{]} = P{[}i{]}{[}j{]}{[}0{]}; \newline for(int k = 1; k \textless{} n; ++k) \newline \{ \newline if(P{[}i{]}{[}j{]}{[}k{]}.weight \textless{} ans{[}i{]}{[}j{]}.weight) \newline \{ \newline ans{[}i{]}{[}j{]} = P{[}i{]}{[}j{]}{[}k{]}; \newline \} \newline \} \newline \} \newline \} \newline return ans; \newline \} \newline PaxNode }}createNewNode(Passenger data) \newline \{ \newline PaxNode {\emph{newNode = new PaxNode; \newline newNode-\textgreater{}data = data; \newline newNode-\textgreater{}next = nullptr; \newline return newNode; \newline \} \newline PaxList insertSorted(PaxList list, Passenger data) \newline \{ \newline PaxNode }}newNode = createNewNode(data); \newline if (list.head == nullptr || list.head-\textgreater{}data.age \textgreater{}= newNode-\textgreater{}data.age) \newline \{ \newline newNode-\textgreater{}next = list.head; \newline list.head = newNode; \newline if(list.tail == nullptr) // If the list was empty, update the tail pointer \newline \{ \newline list.tail = newNode; \newline \} \newline \} \newline else \newline \{ \newline PaxNode {\emph{current = list.head; \newline while (current-\textgreater{}next != nullptr \&\& current-\textgreater{}next-\textgreater{}data.age \textless{} newNode-\textgreater{}data.age) \newline \{ \newline current = current-\textgreater{}next; \newline \} \newline newNode-\textgreater{}next = current-\textgreater{}next; \newline current-\textgreater{}next = newNode; \newline if(current == list.tail) // If the new node was inserted at the end, update the tail pointer \newline \{ \newline list.tail = newNode; \newline \} \newline \} \newline return list; \newline \} \newline PaxList readFile(string filename) \newline \{ \newline ifstream fin; \newline fin.open(filename); \newline if(!fin.is\_open()) \newline \{ \newline cout \textless{}\textless{} "cannot read file"; \newline return PaxList(); \newline \} \newline PaxList list; \newline list.head = nullptr; \newline list.tail = nullptr; \newline string tmp; \newline PaxNode }}newNode = new PaxNode; \newline getline(fin, tmp); \newline if(getline(fin, tmp)) \newline \{ \newline string tmp1 = ""; \newline int i = 0; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).age = stoi(tmp1); \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).date = tmp1; \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != '\textbackslash{}n') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).weight = stof(tmp1); \newline newNode-\textgreater{}next = nullptr; \newline \} \newline list.head = newNode; \newline list.tail = newNode; \newline PaxNode {\emph{cur = list.head; \newline while(getline(fin, tmp)) \newline \{ \newline PaxNode }}newNode = new PaxNode; \newline string tmp1 = ""; \newline int i = 0; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).age = stoi(tmp1); \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).date = tmp1; \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != '\textbackslash{}n') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).weight = stof(tmp1); \newline list = insertSorted(list, newNode-\textgreater{}data); \newline \} \newline return list; \newline \} \newline void printList(PaxList list) \newline \{ \newline PaxNode {\emph{cur = list.head; \newline while(cur != nullptr) \newline \{ \newline cout \textless{}\textless{} cur-\textgreater{}data.age \textless{}\textless{} " " \textless{}\textless{} cur-\textgreater{}data.date \textless{}\textless{} " " \textless{}\textless{} cur-\textgreater{}data.weight \textless{}\textless{} endl; \newline cur = cur-\textgreater{}next; \newline \} \newline \} \newline void removePassenger(PaxList \&list) \newline \{ \newline while(list.head != nullptr \&\& list.head-\textgreater{}next != nullptr \&\& list.head-\textgreater{}data.age \% 2 == 0 \&\& list.head-\textgreater{}next-\textgreater{}data.age \% 2 == 0) \newline \{ \newline PaxNode }}tmp = list.head; \newline list.head = list.head-\textgreater{}next; \newline delete tmp; \newline \} \newline if(list.head == nullptr || list.head-\textgreater{}next == nullptr) \newline \{ \newline return; \newline \} \newline PaxNode {\emph{cur1 = list.head; \newline while (cur1-\textgreater{}next != nullptr) \newline \{ \newline PaxNode }}prev = cur1; \newline PaxNode {\emph{cur2 = cur1-\textgreater{}next; \newline while(cur2 != nullptr) \newline \{ \newline if ((cur1-\textgreater{}data).age \% 2 == 0 \&\& (cur2-\textgreater{}data).age \% 2 == 0) \newline \{ \newline PaxNode }}tmp = cur2; \newline cur2 = cur2-\textgreater{}next; \newline prev-\textgreater{}next = cur2; \newline delete tmp; \newline \} \newline prev = cur2; \newline cur2 = cur2-\textgreater{}next; \newline \} \newline cur1 = cur1-\textgreater{}next; \newline \} \newline \} \newline int main() \newline \{ \newline string doc = "train.txt"; \newline // int p, m, n; \newline // Passenger {\bf{{\emph{P = readFile(doc, p, m, n); \newline // print3D(P, p, m, n); \newline // cout \textless{}\textless{} "-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-" \textless{}\textless{} endl; \newline // Passenger }}minWeight = findMinWeight(P, p, m, n, 2, 2); \newline // print2D(minWeight, p, m); \newline PaxList list = readFile(doc); \newline printList(list); \newline removePassenger(list); \newline cout \textless{}\textless{} "-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-" \textless{}\textless{} endl; \newline printList(list); \newline return 0; \newline \} \newline void stackPush(Train a, List \&stack) \newline \{ \newline Node }}tmp = stack.pHead; \newline Node {\emph{newNode = createNewNode(a); \newline if(stack.pHead == nullptr \&\& stack.pTail == nullptr) \newline \{ \newline stack.pHead = newNode; \newline stack.pTail = newNode; \newline return; \newline \} \newline newNode-\textgreater{}next = stack.pHead; \newline stack.pTail = stack.pHead; \newline stack.pHead = newNode; \newline \} \newline bool stackPop(List \&stack, Train \&x) \newline \{ \newline if(stack.pHead == nullptr) \newline \{ \newline return false; \newline \} \newline Node }}tmp = stack.pHead; \newline stack.pHead = stack.pHead-\textgreater{}next; \newline x = tmp-\textgreater{}data; \newline delete tmp; \newline return true; \newline \} \newline void endQ(Train a, List \&queue) \newline \{ \newline Node {\emph{newNode = createNewNode(a); \newline if(queue.pHead == nullptr) \newline \{ \newline queue.pHead = newNode; \newline queue.pTail = newNode; \newline return; \newline \} \newline queue.pTail-\textgreater{}next = newNode; \newline queue.pTail = newNode; \newline \} \newline bool deQ(Train \&a, List \&queue) \newline \{ \newline if(queue.pHead == nullptr) \newline \{ \newline return false; \newline \} \newline Node }}tmp = queue.pHead; \newline queue.pHead = queue.pHead-\textgreater{}next; \newline a = tmp-\textgreater{}data; \newline delete tmp; \newline return true; \newline \} \newline \#include \textless{}iostream\textgreater{} \newline using namespace std; \newline //create a node \newline struct Node\{ \newline int data; \newline Node {\emph{next; \newline \}; \newline struct List\{ \newline Node }}head; \newline Node {\emph{tail; \newline \}; \newline Node }}createANode(int x) \newline \{ \newline Node {\emph{newNode = new Node; \newline newNode-\textgreater{}data = x; \newline newNode-\textgreater{}next = nullptr; \newline return newNode; \newline \} \newline void addToHead1(int x, List \&list) \newline \{ \newline Node }}tmp = list.head; \newline Node {\emph{newNode = createANode(x); \newline if(list.head == nullptr) \newline \{ \newline list.head = newNode; \newline list.tail = newNode; \newline return; \newline \} \newline newNode-\textgreater{}next = list.head; \newline list.head = newNode; \newline \} \newline void addToTail1(int x, List \&list) \newline \{ \newline Node }}newNode = createANode(x); \newline if(list.head == nullptr) \newline \{ \newline list.head = newNode; \newline list.tail = newNode; \newline \} \newline else \newline \{ \newline list.tail-\textgreater{}next = newNode; \newline list.tail = newNode; \newline \} \newline \} \newline void insertNewNodeBeforeK(int x, int k, List \&list) \newline \{ \newline Node {\emph{newNode = createANode(x); \newline Node }}tmp1 = list.head; \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline if(tmp1-\textgreater{}data == k) \newline \{ \newline addToHead1(x, list); \newline return; \newline \} \newline Node {\emph{tmp2 = tmp1-\textgreater{}next; \newline while(tmp1 != nullptr \&\& tmp2-\textgreater{}data != k \&\& tmp2 != nullptr) \newline \{ \newline tmp1 = tmp1-\textgreater{}next; \newline tmp2 = tmp1-\textgreater{}next; \newline \} \newline tmp1-\textgreater{}next = newNode; \newline newNode-\textgreater{}next = tmp2; \newline \} \newline void deleteHead1(List list) \newline \{ \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline Node }}tmp = list.head; \newline delete tmp; \newline \} \newline void deleteTail1(List \&list) \newline \{ \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline Node {\emph{tmp1 = list.head; \newline while(tmp1-\textgreater{}next != list.tail) \newline \{ \newline tmp1 = tmp1-\textgreater{}next; \newline \} \newline Node }}tmp = list.tail; \newline list.tail = tmp1; \newline list.tail-\textgreater{}next = nullptr; \newline delete tmp; \newline \} \newline void deleteRandomly(List \&list, int k) \newline \{ \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline if(list.head-\textgreater{}data == k) \newline \{ \newline Node {\emph{tmp = list.head; \newline list.head = list.head-\textgreater{}next; \newline delete tmp; \newline return; \newline \} \newline Node }}tmp1 = list.head; \newline Node {\emph{tmp2 = tmp1-\textgreater{}next; \newline while(tmp1 != nullptr \&\& tmp2-\textgreater{}data != k) \newline \{ \newline tmp1 = tmp1-\textgreater{}next; \newline tmp2 = tmp1; \newline \} \newline if(tmp2 != nullptr) \newline \{ \newline tmp1-\textgreater{}next = tmp2-\textgreater{}next; \newline delete tmp2; \newline \} \newline \} \newline void printList1(List list) \newline \{ \newline while(list.head != nullptr) \newline \{ \newline cout \textless{}\textless{} list.head-\textgreater{}data \textless{}\textless{} " "; \newline list.head = list.head-\textgreater{}next; \newline \} \newline \} \newline void printList2(Node }}tmp) \newline \{ \newline if(tmp != nullptr) \newline \{ \newline cout \textless{}\textless{} tmp-\textgreater{}data \textless{}\textless{} " "; \newline printList2(tmp-\textgreater{}next); \newline \} \newline \} \newline //trivial \newline \#include "3\_2.h" \newline node {\emph{createANode(int x) \newline \{ \newline node }}NewNode = new node; \newline NewNode-\textgreater{}data = x; \newline NewNode-\textgreater{}next = nullptr; \newline return NewNode; \newline \} \newline void loadFile(ifstream \&input, LinkedList \&list) \newline \{ \newline list.head = nullptr; \newline int data; \newline input \textgreater{}\textgreater{} data; \newline if (data == 0) \newline \{ \newline return; \newline \} \newline node {\emph{NewNode = createANode(data); \newline list.head = NewNode; \newline node }}tail = list.head; \newline while (true) \newline \{ \newline input \textgreater{}\textgreater{} data; \newline if (data == 0) \newline \{ \newline break; \newline \} \newline NewNode = createANode(data); \newline tail-\textgreater{}next = NewNode; \newline tail = tail-\textgreater{}next; \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}{linked list các thứ huhuhuh}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\#include \textless{}iostream\textgreater{} \newline \#include \textless{}string\textgreater{} \newline \#include \textless{}fstream\textgreater{} \newline using namespace std; \newline struct Passenger\{ \newline int age; \newline string date; // dd/mm/yyyy \newline float weight; \newline \}; \newline struct PaxNode\{ \newline Passenger data; \newline PaxNode{\emph{ next; \newline \}; \newline struct PaxList\{ \newline PaxNode}} head; \newline PaxNode{\emph{ tail; \newline \}; \newline void print2D(Passenger{\bf{ p, int m, int n) \newline \{ \newline for(int i = 0; i \textless{} m; ++i) \newline \{ \newline for(int j = 0; j \textless{} n; ++j) \newline \{ \newline cout \textless{}\textless{} p{[}i{]}{[}j{]}.age \textless{}\textless{} " " \textless{}\textless{} p{[}i{]}{[}j{]}.date \textless{}\textless{} " " \textless{}\textless{} p{[}i{]}{[}j{]}.weight \textless{}\textless{} endl; \newline \} \newline \} \newline \} \newline \newline Passenger}}}} readFile(string filename, int \&p, int \&m, int \&n) \newline \{ \newline ifstream fin; \newline fin.open(filename); \newline if(!fin.is\_open()) \newline \{ \newline cout \textless{}\textless{} "cannot read file"; \newline return nullptr; \newline \} \newline fin \textgreater{}\textgreater{} p \textgreater{}\textgreater{} m \textgreater{}\textgreater{} n; \newline fin.ignore(); \newline string tmp; \newline Passenger {\bf{{\emph{a; \newline a = new Passenger}} {[}p{]}; \newline for(int i = 0; i \textless{} p; ++i) \newline \{ \newline a{[}i{]} = new Passenger}}{[}m{]}; \newline for(int j = 0; j \textless{} m; ++j) \newline \{ \newline a{[}i{]}{[}j{]} = new Passenger{[}n{]}; \newline for(int k = 0; k \textless{} n; ++k) \newline \{ \newline getline(fin, tmp, ' '); \newline a{[}i{]}{[}j{]}{[}k{]}.age = stoi(tmp); \newline getline(fin, tmp, ' '); \newline a{[}i{]}{[}j{]}{[}k{]}.date = tmp; \newline getline(fin, tmp); \newline a{[}i{]}{[}j{]}{[}k{]}.weight = stof(tmp); \newline \} \newline \} \newline \} \newline return a; \newline \} \newline void print3D(Passenger{\bf{{\emph{ P, int p, int m, int n) \newline \{ \newline for(int i = 0; i \textless{} p; ++i) \newline \{ \newline for(int j = 0; j \textless{} m; ++j) \newline \{ \newline for(int k = 0; k \textless{} n; ++k) \newline \{ \newline cout \textless{}\textless{} P{[}i{]}{[}j{]}{[}k{]}.age \textless{}\textless{} " " \textless{}\textless{} P{[}i{]}{[}j{]}{[}k{]}.date \textless{}\textless{} " " \textless{}\textless{} P{[}i{]}{[}j{]}{[}k{]}.weight \textless{}\textless{} endl; \newline \} \newline \newline \} \newline \} \newline \} \newline Passenger}} findMinWeight(Passenger{\bf{}} P, int p, int m, int n, int x, int y) \newline \{ \newline Passenger }}ans; \newline ans = new Passenger{\emph{{[}p{]}; \newline for(int i = 0; i \textless{} p; ++i) \newline \{ \newline ans{[}i{]} = new Passenger{[}m{]}; \newline for(int j = 0; j \textless{} m; ++j) \newline \{ \newline ans{[}i{]}{[}j{]} = P{[}i{]}{[}j{]}{[}0{]}; \newline for(int k = 1; k \textless{} n; ++k) \newline \{ \newline if(P{[}i{]}{[}j{]}{[}k{]}.weight \textless{} ans{[}i{]}{[}j{]}.weight) \newline \{ \newline ans{[}i{]}{[}j{]} = P{[}i{]}{[}j{]}{[}k{]}; \newline \} \newline \} \newline \} \newline \} \newline return ans; \newline \} \newline PaxNode }}createNewNode(Passenger data) \newline \{ \newline PaxNode {\emph{newNode = new PaxNode; \newline newNode-\textgreater{}data = data; \newline newNode-\textgreater{}next = nullptr; \newline return newNode; \newline \} \newline PaxList insertSorted(PaxList list, Passenger data) \newline \{ \newline PaxNode }}newNode = createNewNode(data); \newline if (list.head == nullptr || list.head-\textgreater{}data.age \textgreater{}= newNode-\textgreater{}data.age) \newline \{ \newline newNode-\textgreater{}next = list.head; \newline list.head = newNode; \newline if(list.tail == nullptr) // If the list was empty, update the tail pointer \newline \{ \newline list.tail = newNode; \newline \} \newline \} \newline else \newline \{ \newline PaxNode {\emph{current = list.head; \newline while (current-\textgreater{}next != nullptr \&\& current-\textgreater{}next-\textgreater{}data.age \textless{} newNode-\textgreater{}data.age) \newline \{ \newline current = current-\textgreater{}next; \newline \} \newline newNode-\textgreater{}next = current-\textgreater{}next; \newline current-\textgreater{}next = newNode; \newline if(current == list.tail) // If the new node was inserted at the end, update the tail pointer \newline \{ \newline list.tail = newNode; \newline \} \newline \} \newline return list; \newline \} \newline PaxList readFile(string filename) \newline \{ \newline ifstream fin; \newline fin.open(filename); \newline if(!fin.is\_open()) \newline \{ \newline cout \textless{}\textless{} "cannot read file"; \newline return PaxList(); \newline \} \newline PaxList list; \newline list.head = nullptr; \newline list.tail = nullptr; \newline string tmp; \newline PaxNode }}newNode = new PaxNode; \newline getline(fin, tmp); \newline if(getline(fin, tmp)) \newline \{ \newline string tmp1 = ""; \newline int i = 0; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).age = stoi(tmp1); \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).date = tmp1; \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != '\textbackslash{}n') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).weight = stof(tmp1); \newline newNode-\textgreater{}next = nullptr; \newline \} \newline list.head = newNode; \newline list.tail = newNode; \newline PaxNode {\emph{cur = list.head; \newline while(getline(fin, tmp)) \newline \{ \newline PaxNode }}newNode = new PaxNode; \newline string tmp1 = ""; \newline int i = 0; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).age = stoi(tmp1); \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != ' ') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).date = tmp1; \newline tmp1 = ""; \newline ++i; \newline while(i \textless{} tmp.size() \&\& tmp{[}i{]} != '\textbackslash{}n') \newline \{ \newline tmp1 += tmp{[}i{]}; \newline ++i; \newline \} \newline (newNode-\textgreater{}data).weight = stof(tmp1); \newline list = insertSorted(list, newNode-\textgreater{}data); \newline \} \newline return list; \newline \} \newline void printList(PaxList list) \newline \{ \newline PaxNode {\emph{cur = list.head; \newline while(cur != nullptr) \newline \{ \newline cout \textless{}\textless{} cur-\textgreater{}data.age \textless{}\textless{} " " \textless{}\textless{} cur-\textgreater{}data.date \textless{}\textless{} " " \textless{}\textless{} cur-\textgreater{}data.weight \textless{}\textless{} endl; \newline cur = cur-\textgreater{}next; \newline \} \newline \} \newline void removePassenger(PaxList \&list) \newline \{ \newline while(list.head != nullptr \&\& list.head-\textgreater{}next != nullptr \&\& list.head-\textgreater{}data.age \% 2 == 0 \&\& list.head-\textgreater{}next-\textgreater{}data.age \% 2 == 0) \newline \{ \newline PaxNode }}tmp = list.head; \newline list.head = list.head-\textgreater{}next; \newline delete tmp; \newline \} \newline if(list.head == nullptr || list.head-\textgreater{}next == nullptr) \newline \{ \newline return; \newline \} \newline PaxNode {\emph{cur1 = list.head; \newline while (cur1-\textgreater{}next != nullptr) \newline \{ \newline PaxNode }}prev = cur1; \newline PaxNode {\emph{cur2 = cur1-\textgreater{}next; \newline while(cur2 != nullptr) \newline \{ \newline if ((cur1-\textgreater{}data).age \% 2 == 0 \&\& (cur2-\textgreater{}data).age \% 2 == 0) \newline \{ \newline PaxNode }}tmp = cur2; \newline cur2 = cur2-\textgreater{}next; \newline prev-\textgreater{}next = cur2; \newline delete tmp; \newline \} \newline prev = cur2; \newline cur2 = cur2-\textgreater{}next; \newline \} \newline cur1 = cur1-\textgreater{}next; \newline \} \newline \} \newline int main() \newline \{ \newline string doc = "train.txt"; \newline // int p, m, n; \newline // Passenger {\bf{{\emph{P = readFile(doc, p, m, n); \newline // print3D(P, p, m, n); \newline // cout \textless{}\textless{} "-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-" \textless{}\textless{} endl; \newline // Passenger }}minWeight = findMinWeight(P, p, m, n, 2, 2); \newline // print2D(minWeight, p, m); \newline PaxList list = readFile(doc); \newline printList(list); \newline removePassenger(list); \newline cout \textless{}\textless{} "-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-" \textless{}\textless{} endl; \newline printList(list); \newline return 0; \newline \} \newline void stackPush(Train a, List \&stack) \newline \{ \newline Node }}tmp = stack.pHead; \newline Node {\emph{newNode = createNewNode(a); \newline if(stack.pHead == nullptr \&\& stack.pTail == nullptr) \newline \{ \newline stack.pHead = newNode; \newline stack.pTail = newNode; \newline return; \newline \} \newline newNode-\textgreater{}next = stack.pHead; \newline stack.pTail = stack.pHead; \newline stack.pHead = newNode; \newline \} \newline bool stackPop(List \&stack, Train \&x) \newline \{ \newline if(stack.pHead == nullptr) \newline \{ \newline return false; \newline \} \newline Node }}tmp = stack.pHead; \newline stack.pHead = stack.pHead-\textgreater{}next; \newline x = tmp-\textgreater{}data; \newline delete tmp; \newline return true; \newline \} \newline void endQ(Train a, List \&queue) \newline \{ \newline Node {\emph{newNode = createNewNode(a); \newline if(queue.pHead == nullptr) \newline \{ \newline queue.pHead = newNode; \newline queue.pTail = newNode; \newline return; \newline \} \newline queue.pTail-\textgreater{}next = newNode; \newline queue.pTail = newNode; \newline \} \newline bool deQ(Train \&a, List \&queue) \newline \{ \newline if(queue.pHead == nullptr) \newline \{ \newline return false; \newline \} \newline Node }}tmp = queue.pHead; \newline queue.pHead = queue.pHead-\textgreater{}next; \newline a = tmp-\textgreater{}data; \newline delete tmp; \newline return true; \newline \} \newline \#include \textless{}iostream\textgreater{} \newline using namespace std; \newline //create a node \newline struct Node\{ \newline int data; \newline Node {\emph{next; \newline \}; \newline struct List\{ \newline Node }}head; \newline Node {\emph{tail; \newline \}; \newline Node }}createANode(int x) \newline \{ \newline Node {\emph{newNode = new Node; \newline newNode-\textgreater{}data = x; \newline newNode-\textgreater{}next = nullptr; \newline return newNode; \newline \} \newline void addToHead1(int x, List \&list) \newline \{ \newline Node }}tmp = list.head; \newline Node {\emph{newNode = createANode(x); \newline if(list.head == nullptr) \newline \{ \newline list.head = newNode; \newline list.tail = newNode; \newline return; \newline \} \newline newNode-\textgreater{}next = list.head; \newline list.head = newNode; \newline \} \newline void addToTail1(int x, List \&list) \newline \{ \newline Node }}newNode = createANode(x); \newline if(list.head == nullptr) \newline \{ \newline list.head = newNode; \newline list.tail = newNode; \newline \} \newline else \newline \{ \newline list.tail-\textgreater{}next = newNode; \newline list.tail = newNode; \newline \} \newline \} \newline void insertNewNodeBeforeK(int x, int k, List \&list) \newline \{ \newline Node {\emph{newNode = createANode(x); \newline Node }}tmp1 = list.head; \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline if(tmp1-\textgreater{}data == k) \newline \{ \newline addToHead1(x, list); \newline return; \newline \} \newline Node {\emph{tmp2 = tmp1-\textgreater{}next; \newline while(tmp1 != nullptr \&\& tmp2-\textgreater{}data != k \&\& tmp2 != nullptr) \newline \{ \newline tmp1 = tmp1-\textgreater{}next; \newline tmp2 = tmp1-\textgreater{}next; \newline \} \newline tmp1-\textgreater{}next = newNode; \newline newNode-\textgreater{}next = tmp2; \newline \} \newline void deleteHead1(List list) \newline \{ \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline Node }}tmp = list.head; \newline delete tmp; \newline \} \newline void deleteTail1(List \&list) \newline \{ \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline Node {\emph{tmp1 = list.head; \newline while(tmp1-\textgreater{}next != list.tail) \newline \{ \newline tmp1 = tmp1-\textgreater{}next; \newline \} \newline Node }}tmp = list.tail; \newline list.tail = tmp1; \newline list.tail-\textgreater{}next = nullptr; \newline delete tmp; \newline \} \newline void deleteRandomly(List \&list, int k) \newline \{ \newline if(list.head == nullptr) \newline \{ \newline return; \newline \} \newline if(list.head-\textgreater{}data == k) \newline \{ \newline Node {\emph{tmp = list.head; \newline list.head = list.head-\textgreater{}next; \newline delete tmp; \newline return; \newline \} \newline Node }}tmp1 = list.head; \newline Node {\emph{tmp2 = tmp1-\textgreater{}next; \newline while(tmp1 != nullptr \&\& tmp2-\textgreater{}data != k) \newline \{ \newline tmp1 = tmp1-\textgreater{}next; \newline tmp2 = tmp1; \newline \} \newline if(tmp2 != nullptr) \newline \{ \newline tmp1-\textgreater{}next = tmp2-\textgreater{}next; \newline delete tmp2; \newline \} \newline \} \newline void printList1(List list) \newline \{ \newline while(list.head != nullptr) \newline \{ \newline cout \textless{}\textless{} list.head-\textgreater{}data \textless{}\textless{} " "; \newline list.head = list.head-\textgreater{}next; \newline \} \newline \} \newline void printList2(Node }}tmp) \newline \{ \newline if(tmp != nullptr) \newline \{ \newline cout \textless{}\textless{} tmp-\textgreater{}data \textless{}\textless{} " "; \newline printList2(tmp-\textgreater{}next); \newline \} \newline \} \newline //trivial \newline \#include "3\_2.h" \newline node {\emph{createANode(int x) \newline \{ \newline node }}NewNode = new node; \newline NewNode-\textgreater{}data = x; \newline NewNode-\textgreater{}next = nullptr; \newline return NewNode; \newline \} \newline void loadFile(ifstream \&input, LinkedList \&list) \newline \{ \newline list.head = nullptr; \newline int data; \newline input \textgreater{}\textgreater{} data; \newline if (data == 0) \newline \{ \newline return; \newline \} \newline node {\emph{NewNode = createANode(data); \newline list.head = NewNode; \newline node }}tail = list.head; \newline while (true) \newline \{ \newline input \textgreater{}\textgreater{} data; \newline if (data == 0) \newline \{ \newline break; \newline \} \newline NewNode = createANode(data); \newline tail-\textgreater{}next = NewNode; \newline tail = tail-\textgreater{}next; \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}{sdfsadgasdf}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{\seqsplit{djsfgasldkjfhksdhf;sidh;klds}% Row Count 1 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}