Skip to content

Commit 01feedc

Browse files
author
Steven Kester Yuwono
committed
added remove tail for doubly
1 parent 7ce24ef commit 01feedc

File tree

2 files changed

+126
-12
lines changed

2 files changed

+126
-12
lines changed

js/widgets/ListWidget.js

Lines changed: 107 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1907,6 +1907,108 @@ this.insertArrTail = function(vertexTextArr){
19071907
}
19081908

19091909

1910+
this.removeArrTailDoublyList = function(){
1911+
var vertexTextArr = [1];
1912+
var stateList = [];
1913+
var vertexTraversed = {};
1914+
var edgeTraversed = {};
1915+
var currentVertex = internalBst["root"];
1916+
var nextVertex = internalBst[currentVertex]["rightChild"];
1917+
var currentState = createState(internalBst);
1918+
var currentVertexClass;
1919+
var nextVertexClass;
1920+
var key;
1921+
var i;
1922+
1923+
if(amountVertex==1){
1924+
return this.removeArrHead();
1925+
}
1926+
1927+
1928+
// Find vertex
1929+
while(true){
1930+
1931+
1932+
if(internalBst[nextVertex]["rightChild"]!=null) {
1933+
nextVertex = internalBst[nextVertex]["rightChild"];
1934+
currentVertex = internalBst[currentVertex]["rightChild"];
1935+
}
1936+
else break;
1937+
}
1938+
1939+
currentVertexClass = internalBst[currentVertex]["vertexClassNumber"];
1940+
nextVertexClass = internalBst[nextVertex]["vertexClassNumber"];
1941+
1942+
//Vertex temp = tail
1943+
currentState = createState(internalBst, vertexTraversed, edgeTraversed);
1944+
1945+
currentState["vl"][nextVertexClass]["state"] = VERTEX_HIGHLIGHTED;
1946+
currentState["status"] = "set temp to tail";
1947+
currentState["lineNo"] = 1;
1948+
stateList.push(currentState);
1949+
//end
1950+
1951+
//Vertex temp = tail
1952+
currentState = createState(internalBst, vertexTraversed, edgeTraversed);
1953+
1954+
currentState["vl"][nextVertexClass]["state"] = VERTEX_HIGHLIGHTED;
1955+
currentState["el"][currentVertexClass+BACK_EDGE_CONST]["state"] = EDGE_HIGHLIGHTED;
1956+
currentState["vl"][currentVertexClass]["state"] = VERTEX_BLUE_FILL;
1957+
currentState["status"] = "set tail to tail.prev";
1958+
currentState["lineNo"] = 2;
1959+
stateList.push(currentState);
1960+
//end
1961+
1962+
1963+
1964+
//tail.next = null
1965+
currentState = createState(internalBst, vertexTraversed, edgeTraversed);
1966+
//prev highlight
1967+
currentVertexClass = internalBst[currentVertex]["vertexClassNumber"];
1968+
nextVertexClass = internalBst[nextVertex]["vertexClassNumber"];
1969+
currentState["el"][currentVertexClass]["state"] = OBJ_HIDDEN;
1970+
currentState["vl"][currentVertexClass]["state"] = VERTEX_BLUE_FILL;
1971+
//temp hightlight
1972+
nextVertexClass = internalBst[nextVertex]["vertexClassNumber"];
1973+
currentState["vl"][nextVertexClass]["state"] = VERTEX_HIGHLIGHTED;
1974+
vertexTraversed[currentVertex] = true;
1975+
1976+
//status
1977+
currentState["status"] = "Set last vertex.next to null";
1978+
currentState["lineNo"] = 3;
1979+
stateList.push(currentState);
1980+
//end
1981+
1982+
var parentVertex = internalBst[nextVertex]["parent"];
1983+
if(parentVertex !=null) internalBst[parentVertex]["rightChild"] = null;
1984+
else internalBst["root"] = null;
1985+
1986+
1987+
//delete temp
1988+
delete internalBst[nextVertex];
1989+
delete vertexTraversed[nextVertex];
1990+
delete edgeTraversed[nextVertexClass];
1991+
1992+
currentState = createState(internalBst, vertexTraversed, edgeTraversed);
1993+
currentState["vl"][currentVertexClass]["state"] = VERTEX_HIGHLIGHTED;
1994+
currentState["status"] = "delete last vertex";
1995+
currentState["lineNo"] = 4;
1996+
stateList.push(currentState);
1997+
//end
1998+
1999+
currentState = createState(internalBst);
2000+
currentState["status"] = "Removal of last vertex completed";
2001+
currentState["lineNo"] = 0;
2002+
stateList.push(currentState);
2003+
2004+
2005+
graphWidget.startAnimation(stateList);
2006+
2007+
populatePseudocode(8);
2008+
amountVertex--;
2009+
return true;
2010+
}
2011+
19102012
this.removeArrKth = function(vertexTextArr){
19112013
var stateList = [];
19122014
var vertexTraversed = {};
@@ -2419,11 +2521,11 @@ this.insertArrTail = function(vertexTextArr){
24192521
document.getElementById('code6').innerHTML = 'delete temp';
24202522
document.getElementById('code7').innerHTML = '';
24212523
break;
2422-
case 8:
2423-
document.getElementById('code1').innerHTML = '';
2424-
document.getElementById('code2').innerHTML = '';
2425-
document.getElementById('code3').innerHTML = '';
2426-
document.getElementById('code4').innerHTML = '';
2524+
case 8: //remove tail doubly list
2525+
document.getElementById('code1').innerHTML = 'temp = tail';
2526+
document.getElementById('code2').innerHTML = 'tail = tail.prev';
2527+
document.getElementById('code3').innerHTML = 'tail.next = null';
2528+
document.getElementById('code4').innerHTML = 'delete temp';
24272529
document.getElementById('code5').innerHTML = '';
24282530
document.getElementById('code6').innerHTML = '';
24292531
document.getElementById('code7').innerHTML = '';

list.html

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -639,13 +639,25 @@
639639
function removeTail(){
640640
if(isPlaying) { stop(); }
641641
setTimeout( function() {
642-
if((mode=="exploration")&&bstWidget.removeArrTail()) {
643-
$('#current-action').show();
644-
$('#current-action p').html("Remove Tail");
645-
$('#progress-bar').slider( "option", "max", gw.getTotalIteration()-1);
646-
triggerRightPanels();
647-
isPlaying = true;
648-
}
642+
if(bstWidget.getActiveStatus()=="doublylist"){
643+
if((mode=="exploration")&&bstWidget.removeArrTailDoublyList()) {
644+
$('#current-action').show();
645+
$('#current-action p').html("Remove Tail");
646+
$('#progress-bar').slider( "option", "max", gw.getTotalIteration()-1);
647+
triggerRightPanels();
648+
isPlaying = true;
649+
}
650+
}
651+
else{
652+
if((mode=="exploration")&&bstWidget.removeArrTail()) {
653+
$('#current-action').show();
654+
$('#current-action p').html("Remove Tail");
655+
$('#progress-bar').slider( "option", "max", gw.getTotalIteration()-1);
656+
triggerRightPanels();
657+
isPlaying = true;
658+
}
659+
}
660+
649661
}, 500);
650662
}
651663

0 commit comments

Comments
 (0)