Skip to content

Commit 011108a

Browse files
committed
AV-07: refine delete method
2 parents 6346529 + 0b2b847 commit 011108a

File tree

1 file changed

+34
-20
lines changed

1 file changed

+34
-20
lines changed

src/algorithms/linked-list/Linked-List.vue

+34-20
Original file line numberDiff line numberDiff line change
@@ -237,36 +237,50 @@
237237
}
238238
},
239239
240+
241+
deleteNode(node, cx, x){
242+
if(node){
243+
const currentCircleXAxis = parseFloat(node.element.circle.attr('cx'));
244+
const currentTextX = parseFloat(node.element.text.attr('x'));
245+
console.log(cx, currentCircleXAxis, x, currentTextX);
246+
node.element.circle.transition()
247+
.duration(1000)
248+
.attr('cx', cx);
249+
250+
node.element.text.transition()
251+
.duration(1000)
252+
.attr('x', x);
253+
if(node.element.lines){
254+
for(const line of node.element.lines){
255+
line.attr('x1', currentTextX);
256+
}
257+
}
258+
this.deleteNode(node.next, currentCircleXAxis, currentTextX)
259+
}
260+
261+
return;
262+
263+
},
264+
240265
removeItemFromLinkedList() {
241266
let current = this.linkedList.head;
242267
243268
while (current) {
244269
if (current.data == this.targetValue) {
270+
const currentCircleXAxis = parseFloat(current.element.circle.attr('cx'));
271+
const currentTextX = parseFloat(current.element.text.attr('x'));
245272
console.log("Item found to delete");
246-
const currentCircleXAxis = parseFloat( current.element.circle.attr('cx'));
247-
const currentTextX = parseFloat( current.element.text.attr('x'));
248273
current.element.circle.remove();
249274
current.element.text.remove();
275+
if(current.next) {
276+
current.data = current.next.data;
250277
251-
for(const line of current.element.lines){
252-
line.remove();
253-
}
254-
current.next?.element.circle.transition()
255-
.duration(1000)
256-
.attr('cx', currentCircleXAxis);
257-
current.next?.element.text.transition()
258-
.duration(1000)
259-
.attr('x', currentTextX);
260-
current.data = current.next.data;
261-
current.element = current.next.element;
262-
if (current.next) {
263-
current.next = current.next.next;
264-
} else {
265-
current.next = null;
278+
for (const line of current.element.lines) {
279+
line.remove();
280+
}
281+
current.element = current.next.element;
282+
this.deleteNode(current.next, currentCircleXAxis, currentTextX);
266283
}
267-
console.log()
268-
269-
270284
break;
271285
}
272286
current = current.next;

0 commit comments

Comments
 (0)