@@ -1907,6 +1907,108 @@ this.insertArrTail = function(vertexTextArr){
1907
1907
}
1908
1908
1909
1909
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
+
1910
2012
this . removeArrKth = function ( vertexTextArr ) {
1911
2013
var stateList = [ ] ;
1912
2014
var vertexTraversed = { } ;
@@ -2419,11 +2521,11 @@ this.insertArrTail = function(vertexTextArr){
2419
2521
document . getElementById ( 'code6' ) . innerHTML = 'delete temp' ;
2420
2522
document . getElementById ( 'code7' ) . innerHTML = '' ;
2421
2523
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 ' ;
2427
2529
document . getElementById ( 'code5' ) . innerHTML = '' ;
2428
2530
document . getElementById ( 'code6' ) . innerHTML = '' ;
2429
2531
document . getElementById ( 'code7' ) . innerHTML = '' ;
0 commit comments