|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<title> | tait.tech</title>
|
|
|
|
|
<link rel="stylesheet" href="/assets/css/style.css">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/assets/css/katex.css">
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<main>
|
|
|
|
|
<div id="wrapper">
|
|
|
|
|
<h1 id="ll-queues--ll-traversal">L.L. Queues & L.L. Traversal</h1>
|
|
|
|
|
|
|
|
|
|
<h2 id="basic-ll-queue">Basic L.L. Queue</h2>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li><a href="#frontele1">front</a></li>
|
|
|
|
|
<li><a href="#backele1">back</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<table>
|
|
|
|
|
<thead>
|
|
|
|
|
<tr>
|
|
|
|
|
<th>Value</th>
|
|
|
|
|
<th>Next</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="frontele1">a</span></td>
|
|
|
|
|
<td><a href="#ele11">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele11">b</span></td>
|
|
|
|
|
<td><a href="#ele12">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele12">…</span></td>
|
|
|
|
|
<td>…</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele13">g</span></td>
|
|
|
|
|
<td><a href="#backele1">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="backele1">h</span></td>
|
|
|
|
|
<td>nullptr</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<p>as a stack, this L.L. would be:</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>a</mi><mo>→</mo><mi>b</mi><mo>→</mo><mo>⋯</mo><mo>→</mo><mi>h</mi></mrow><annotation encoding="application/x-tex">a \rightarrow b \rightarrow \dots \rightarrow h</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">a</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.36687em;vertical-align:0em;"></span><span class="minner">⋯</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">h</span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo-code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>class Node{
|
|
|
|
|
Type data
|
|
|
|
|
Node * next
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<h2 id="enqueue--dequeue--first--versions">Enqueue + Dequeue – First Versions</h2>
|
|
|
|
|
|
|
|
|
|
<p>Variables:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li>float (pointer to stack)</li>
|
|
|
|
|
<li>back (pointer to stack)</li>
|
|
|
|
|
<li>size (# elements in queue)</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h3 id="dequeue">Dequeue:</h3>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo-code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dequeue(){
|
|
|
|
|
temp = front
|
|
|
|
|
val = front->data
|
|
|
|
|
front = front->next
|
|
|
|
|
delete temp
|
|
|
|
|
size = size-1
|
|
|
|
|
return val
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<p>Diagram:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li><del><a href="#frontele2">front</a></del>
|
|
|
|
|
<ins><a href="#ele21">front</a></ins></li>
|
|
|
|
|
<li><a href="#backele2">back</a></li>
|
|
|
|
|
<li><a href="#frontele2">temp</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<table>
|
|
|
|
|
<thead>
|
|
|
|
|
<tr>
|
|
|
|
|
<th>Value</th>
|
|
|
|
|
<th>Next</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><del><span id="frontele2">a</span></del></td>
|
|
|
|
|
<td><del><a href="#ele21">pointer</a></del></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele21">b</span></td>
|
|
|
|
|
<td><a href="#ele22">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele22">…</span></td>
|
|
|
|
|
<td>…</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele13">g</span></td>
|
|
|
|
|
<td><a href="#backele2">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="backele2">h</span></td>
|
|
|
|
|
<td>nullptr</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<h3 id="unqueue">Unqueue</h3>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo-code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>enqueue(x){
|
|
|
|
|
n = new node containing x
|
|
|
|
|
back->next = n
|
|
|
|
|
back = back->next
|
|
|
|
|
size = size+1
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<p>Diagram:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li><a href="#frontele3">front</a></li>
|
|
|
|
|
<li><del><a href="#backele3">back</a></del>
|
|
|
|
|
<ins><a href="#backele32">back</a></ins></li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<table>
|
|
|
|
|
<thead>
|
|
|
|
|
<tr>
|
|
|
|
|
<th>Value</th>
|
|
|
|
|
<th>Next</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="frontele3">a</span></td>
|
|
|
|
|
<td><a href="#ele31">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele31">b</span></td>
|
|
|
|
|
<td><a href="#ele32">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele32">…</span></td>
|
|
|
|
|
<td>…</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="ele33">g</span></td>
|
|
|
|
|
<td><a href="#backele3">pointer</a></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><span id="backele3">h</span></td>
|
|
|
|
|
<td><del>nullptr</del> <ins><a href="#backele32">pointer</a></ins></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><ins><span id="backele32">x</span></ins></td>
|
|
|
|
|
<td><ins>nullptr</ins></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<h2 id="empty-queue">Empty Queue</h2>
|
|
|
|
|
|
|
|
|
|
<p>A stack with a</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>a</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow a \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">a</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>After dequeue</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo separator="true">,</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front}, \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>After enqueue(b)</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>b</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow b \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>Enqueue & Dequeue are different from empty/non-empty queues.</p>
|
|
|
|
|
|
|
|
|
|
<h2 id="enqueue">Enqueue</h2>
|
|
|
|
|
|
|
|
|
|
<p>Example 1: Empty queue</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo separator="true">,</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front}, \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>Enqueue b</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>b</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow b \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>Example 2: Starter queue</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mo>⋯</mo><mo>→</mo><mi>x</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow \dots \rightarrow x \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.36687em;vertical-align:0em;"></span><span class="minner">⋯</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>enqueue b</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mo>⋯</mo><mo>→</mo><mi>x</mi><mo>→</mo><mi>b</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow \dots \rightarrow x \rightarrow b \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.36687em;vertical-align:0em;"></span><span class="minner">⋯</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>enqueue(x){
|
|
|
|
|
if size > 0{
|
|
|
|
|
back->next = new Node(x)
|
|
|
|
|
back = back->next
|
|
|
|
|
} else {
|
|
|
|
|
back = new Node(x)
|
|
|
|
|
front = back
|
|
|
|
|
}
|
|
|
|
|
size = size+1
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<h2 id="dequeue-1">Dequeue</h2>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>front = front->next
|
|
|
|
|
return value
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<p>That code has the following effect upon a queue.</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>a</mi><mo>→</mo><mi>b</mi><mo>→</mo><mi>c</mi><mo>→</mo><mi>d</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow a \rightarrow b \rightarrow c \rightarrow d \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">a</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">c</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>becomes</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>b</mi><mo>→</mo><mi>c</mi><mo>→</mo><mi>d</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow b \rightarrow c \rightarrow d \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">c</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>while returning a.</p>
|
|
|
|
|
|
|
|
|
|
<h3 id="example-1">Example 1:</h3>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>b</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow b \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>dequeue (b)</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo separator="true">,</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front}, \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<h3 id="example-2">Example 2:</h3>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>b</mi><mo>→</mo><mi>c</mi><mo>→</mo><mi>d</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow b \rightarrow c \rightarrow d \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">c</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>dequeue</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>front</mtext><mo>→</mo><mi>c</mi><mo>→</mo><mi>d</mi><mo>←</mo><mtext>back</mtext></mrow><annotation encoding="application/x-tex">\text{front} \rightarrow c \rightarrow d \leftarrow \text{back}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">front</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">c</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">←</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">back</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>Return b</p>
|
|
|
|
|
|
|
|
|
|
<h3 id="pseudo-code">Pseudo code</h3>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dequeue(){
|
|
|
|
|
temp = front
|
|
|
|
|
val = front->data
|
|
|
|
|
front = front->next
|
|
|
|
|
delete temp
|
|
|
|
|
size = size-1
|
|
|
|
|
return val
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<h2 id="traversing-the-list">Traversing the List</h2>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>displayList(){
|
|
|
|
|
Node * cur = front;
|
|
|
|
|
while(cur!=nullptr){
|
|
|
|
|
output cur->data
|
|
|
|
|
cur = cur->next
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<p>A diagram which shows the cursor going from c, to d to be (in order from front to back).</p>
|
|
|
|
|
|
|
|
|
|
<h2 id="linked-list-ends">Linked List Ends</h2>
|
|
|
|
|
|
|
|
|
|
<p>Transcriber’s note: this is the same as in 06. The left/right arrows denote a double linked list, even though the current set of slides is talking about only singly linked lists.</p>
|
|
|
|
|
|
|
|
|
|
<p>For [4, 5, 6]:</p>
|
|
|
|
|
|
|
|
|
|
<p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>head</mtext><mo>↔</mo><mtext>beginning node</mtext><mo>↔</mo><mn>4</mn><mo>↔</mo><mn>5</mn><mo>↔</mo><mn>6</mn><mo>↔</mo><mtext>ending node</mtext><mo>↔</mo><mtext>tail</mtext></mrow><annotation encoding="application/x-tex">
|
|
|
|
|
\text{head} \leftrightarrow \text{beginning node} \leftrightarrow 4 \leftrightarrow 5 \leftrightarrow 6 \leftrightarrow \text{ending node} \leftrightarrow \text{tail}
|
|
|
|
|
</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">head</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">beginning node</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">4</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">6</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">ending node</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">tail</span></span></span></span></span></span></p>
|
|
|
|
|
|
|
|
|
|
<p>versus</p>
|
|
|
|
|
|
|
|
|
|
<p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>head</mtext><mo>↔</mo><mn>4</mn><mo>↔</mo><mn>5</mn><mo>↔</mo><mn>6</mn><mo>↔</mo><mtext>tail</mtext></mrow><annotation encoding="application/x-tex">
|
|
|
|
|
\text{head} \leftrightarrow 4 \leftrightarrow 5 \leftrightarrow 6 \leftrightarrow \text{tail}
|
|
|
|
|
</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">head</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">4</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">6</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">tail</span></span></span></span></span></span></p>
|
|
|
|
|
|
|
|
|
|
<p>For [5]:</p>
|
|
|
|
|
|
|
|
|
|
<p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>head</mtext><mo>↔</mo><mtext>beginning node</mtext><mo>↔</mo><mn>5</mn><mo>↔</mo><mtext>ending node</mtext><mo>↔</mo><mtext>tail</mtext></mrow><annotation encoding="application/x-tex">
|
|
|
|
|
\text{head} \leftrightarrow \text{beginning node} \leftrightarrow 5 \leftrightarrow \text{ending node} \leftrightarrow \text{tail}
|
|
|
|
|
</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">head</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">beginning node</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">ending node</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">tail</span></span></span></span></span></span></p>
|
|
|
|
|
|
|
|
|
|
<p>versus</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>head</mtext><mo>↔</mo><mn>5</mn><mo>↔</mo><mtext>tail</mtext></mrow><annotation encoding="application/x-tex">\text{head} \leftrightarrow 5 \leftrightarrow \text{tail}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">head</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">tail</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>For []:</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>head</mtext><mo>↔</mo><mtext>beginning node</mtext><mo>↔</mo><mtext>ending node</mtext><mo>↔</mo><mtext>tail</mtext></mrow><annotation encoding="application/x-tex">\text{head} \leftrightarrow \text{beginning node} \leftrightarrow \text{ending node} \leftrightarrow \text{tail}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">head</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">beginning node</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">ending node</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">↔</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord text"><span class="mord">tail</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<p>versus</p>
|
|
|
|
|
|
|
|
|
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>head</mtext><mo separator="true">,</mo><mtext>tail</mtext></mrow><annotation encoding="application/x-tex">\text{head} , \text{tail}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord text"><span class="mord">head</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord">tail</span></span></span></span></span></span>
|
|
|
|
|
|
|
|
|
|
<h2 id="list-class-traversing-the-list">List Class: Traversing the List</h2>
|
|
|
|
|
|
|
|
|
|
<p>Pseudo code:</p>
|
|
|
|
|
|
|
|
|
|
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>displayList(){
|
|
|
|
|
Node * cur = head->next
|
|
|
|
|
while(cur!=tail){
|
|
|
|
|
output cur->data
|
|
|
|
|
cur = cur->next
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</code></pre></div></div>
|
|
|
|
|
|
|
|
|
|
<p>Graphic of <code class="language-plaintext highlighter-rouge">cur</code> moving through each (empty) element of the queue.</p>
|
|
|
|
|
|
|
|
|
|
<footer>
|
|
|
|
|
</footer>
|
|
|
|
|
</div>
|
|
|
|
|
</main>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|