Linked List stuff
by Andrew Poes
CSS
.print {
position: relative;
display: inline-block;
background-color: black;
color: white;
font-family: Helvetica, Helvetica-Neue, sans-serif;
font-weight: bold;
font-size: 24px;
letter-spacing: -1.5px;
padding: 4px 8px;
}
body {
background-color: #eeeeee;
}
}
JavaScript
var Node = function() {
var next;
var data;
}
$(document).ready(function() {
var dummyData = [3,5,7,4,1,2]
var n = new Node()
n.data = dummyData[0]
var head = n
for (var i = 1; i < dummyData.length; ++i) {
var node = new Node()
node.data = dummyData[i];
n.next = node
n = node
}
var value = { node: null, count: 0 }
nthToLast(head, 3, value)
var node = nthToLastRet(head, 3)
traverse(head)
partition(head, node)
traverse(head)
})
function traverse(head) {
var n = head
var count = 0
var str = "["
while (n != null) {
str += n.data.toString()
n = n.next
if (n != null) {
str += ", "
}
else {
str += "]"
}
++count
}
print(str)
}
function nthToLast(head, k, value) {
k = Math.max(k, 1)
if (head == null) {
return 0
}
var i = nthToLast(head.next, k, value)
i += 1
if (i == k) {
value.node = head
value.count = head.data
}
return i
}
function nthToLastRet(head, k) {
var ptr1 = head
var ptr2 = head
for (var i = 0; i < k - 1; ++i) {
if (ptr2.next == null) {
return null
}
ptr2 = ptr2.next
}
while(ptr2.next != null) {
ptr1 = ptr1.next
ptr2 = ptr2.next
}
return ptr1
}
function partition(head, pivot) {
var pNode = head
var cNode = head
var swap = function(a, b) {
var t = a.data
a.data = b.data
b.data = t
}
while (cNode != null) {
if (cNode.data < pivot.data) {
swap(pNode, cNode)
pNode = pNode.next
}
cNode = cNode.next
}
swap(pNode, pivot)
}
function print() {
var args = Array.prototype.slice.apply(arguments)
var str = ""
for (arg of args) {
str += arg + ", "
}
str = str.substring(0, str.length - 2)
var el = newel(str)
$("body").append(el)
...