A9 Hash Compression
Final working version
by scotp71
HTML
<H1>
Hash Table
</H1>
<form id="form">Enter Phrase.
<br>
<textarea id='phrase' rows='10' cols='50'>I want what I want and I know what I want</textarea>
<br>
<input type="button" value="Parse Phrase" id="parse" onClick='parsePhrase();'>
</form>
<div id="output"></div>
JavaScript
var aList = new LinkedList();
function parsePhrase() {
debugger;
var phrase = document.getElementById('phrase').value;
var phraseAsStringArray = phrase.split(' ');
var len = phraseAsStringArray.length;
for (var i = 0; i < len; i++) {
Words(phraseAsStringArray[i], i);
}
document.getElementById("output").innerHTML = finalPrint();
}
var bins = [];
var same = false;
var wordIndex = null;
function Words(word, index){
if(bins.length==0){
addNewWord(word, index);
return;
}
if (sameWord(word)!= true){
addNewWord(word, index);
}
else{
addExistingWord(word,index);
}
return;
}
function addNewWord(word, index){
var newWord = new LinkedList();
newWord.add(word, index);
bins.push(newWord);
}
function addExistingWord(word, index){
for (var z=0; z<bins.length; z++){
var head = bins[z].head.content;
var w = word;
var lh = head.toLowerCase();
var lw = word.toLowerCase();
if(lw == lh){
bins[z].add(word, index);
}
}
}
function sameWord(word){
for (var j=0; j<bins.length; j++){
var head = bins[j].head.content;
var w = word;
var lh = head.toLowerCase();
var lw = word.toLowerCase();
if(lw == lh){
return true;
}
}
return false;
}
function finalPrint(){
var s ="";
for (var k=0; k<bins.length; k++){
s+= bins[k].head.content + ": " + indexPrint(k) + "</br>";
}
return s;
}
function indexPrint(k){
var y = "";
var node = new Node(); node = bins[k].head;
for (var a=0; a<bins[k].length; a++){
y += (node.num+1) + ", ";
node = node.next;
}
return y;
}
function LinkedList(){
this.head = null;
this.tail = null;
this.length = 0;
}
function Node(){
this.next = null;
this.prev = null;
this.content = null;
this.num = null;
}
LinkedList.prototype.add = function(_content, index) {
var node = new Node(); node.content = _content; node.num = index;
if (this.head == null) {
this.head =...