Specifically, it does not have the following methods:
|
You must add these methods in the provided SkipList class to complete the implementation.
I have added some hints on how to write these methods below....
p = findExntry(k); if (p.key != k) return(null); // Not found, don't remove /* ------------------------------------------------------------ We are at level 0 Travel up the tower and link the left and right neighbors ------------------------------------------------------------ */ while ( p != null ) { p.left.right = p.right; p.right.left = p.left; } |
The skip list is: ******************************* -oo <---------------------------------> HIJ <-------------------------> +oo -oo <-------------------------> HAT <-> HIJ <-------------------------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <---------> XYZ <---------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <---------> XYZ <---------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <---------> XYZ <---------> +oo -oo <-> AAA <-> ABC <-> DEF <-> HAT <-> HIJ <-> KLM <-> XYZ <-> ZIJ <-> +oo ******************************* ===================================== Testing the value-added methods: ===================================== firstEntry() = (AAA,123) lastEntry() = (ZIJ,957) ceilingEntry(XYZ) = (XYZ,444) floorEntry(XYZ) = (XYZ,444) upperEntry(XYZ) = (ZIJ,957) lowerEntry(XYZ) = (KLM,987) ceilingEntry(WWW) = (XYZ,444) floorEntry(WWW) = (KLM,987) upperEntry(WWW) = (XYZ,444) lowerEntry(WWW) = (KLM,987) ===================================== Testing the remove() implementaion: ===================================== remove XXX returns: null (correct: null) ******************************* -oo <---------------------------------> HIJ <-------------------------> +oo -oo <-------------------------> HAT <-> HIJ <-------------------------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <---------> XYZ <---------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <---------> XYZ <---------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <---------> XYZ <---------> +oo -oo <-> AAA <-> ABC <-> DEF <-> HAT <-> HIJ <-> KLM <-> XYZ <-> ZIJ <-> +oo ******************************* remove XYZ returns: 444 (correct: 444) ******************************* -oo <---------------------------------> HIJ <-----------------> +oo -oo <-------------------------> HAT <-> HIJ <-----------------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <-----------------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <-----------------> +oo -oo <-> AAA <-----------------> HAT <-> HIJ <-----------------> +oo -oo <-> AAA <-> ABC <-> DEF <-> HAT <-> HIJ <-> KLM <-> ZIJ <-> +oo ******************************* remove HAT returns: 777 (correct: 777) ******************************* -oo <-------------------------> HIJ <-----------------> +oo -oo <-------------------------> HIJ <-----------------> +oo -oo <-> AAA <-----------------> HIJ <-----------------> +oo -oo <-> AAA <-----------------> HIJ <-----------------> +oo -oo <-> AAA <-----------------> HIJ <-----------------> +oo -oo <-> AAA <-> ABC <-> DEF <-> HIJ <-> KLM <-> ZIJ <-> +oo ******************************* ************ DONE ************ |
|