Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schema statie auto Renegade REN 1...

Magazine IT de incredere

Parere SKODA Octavia 3 2.0TDI 150CP

Achizitie telefon 1000-1200lei
 Unde gasesc o lampa buna pe gaz?

Consulta specialiștii... Und...

Fostul director al Frontex: Comis...

Construire anexa lipita de casa
 Ce folositi pentru urina mirosito...

Socializare in prezenta copiilor

Cont Samsung A32

Hotarare definitiva a instantei, ...
 Laptop office 2500 lei

un ceai bun

sugerarea bacsisului de catre pat...

Bara Golf 7 Variant
 

Javascript - cum sa sterg complet obiectele "orfane" dintr-o linked list

- - - - -
  • Please log in to reply
2 replies to this topic

#1
wolfenste

wolfenste

    Member

  • Grup: Members
  • Posts: 529
  • Înscris: 02.05.2018
Am o linked list in care adaug si sterg noduri. Creez un nou nod (un obiect avand mai multe proprietati) iar daca il elimin mai tarziu din lista, doar editez legaturile dintre nodul precedent si nodul urmator. Si gata, nodul "sters" nu mai apare in lista. Numai ca el este doar eliminat din lista, ramane in memorie (ram). Vreau sa il sterg definitiv sa nu am memoria ocupata degeaba. Chiar daca asta se intampla intr-o functie si vor fi sterse oricum toate la iesirea din functie (functia returneaza number), pentru input foarte mare tot o sa am memoria ocupata prea mult si degeaba.

Cica daca nu le-am definit cu "var" ar putea fi sterse cu delete. Le-am definit cu "let".
Daca le pun intr-un array ce functioneaza ca un stack si le dau array.pop () pana ramane gol, sunt sterse definitiv?
Alte idei? Cum sa procedez corect? Va rog astazi ca maine-i prea tarziu. :)
Multumesc!

Edited by wolfenste, 07 July 2021 - 09:40.


#2
laffin

laffin

    Senior Member

  • Grup: Senior Members
  • Posts: 9,212
  • Înscris: 16.03.2007
relax, se ocupa garbage collector.

#3
wolfenste

wolfenste

    Member

  • Grup: Members
  • Posts: 529
  • Înscris: 02.05.2018
Adica sa-l las asa? Nu e codul propriu zis, e simplificat sa fie ilustrativ.

class O {
constructor (val, prev, next) {
	 this.val = val;
	 this.prev = prev;
	 this.next = next;
}
}

function insertAfter (position, element) {
element.next = position.next;
element.prev = position;
element.next.prev = element;
position.next = element;
}

function deleteCurrent (current) {
current.prev.next = current.next;
current.next.prev = current.prev;
}


function some () {
// Create a doubly linked list with a sentinel nil
let nil = new O (null, null, null);
let head = new O (1, null, null);
nil.next = head;
nil.prev = head;
head.next = nil;
head.prev = nil;

let current = nil.next;
for (let i = 2; i < 11; ++i) {
	 let obj = new O (i, null, null);
	 insertAfter (current, obj);
	 current = current.next;
}

console.log (current); // current is object with val = 10
let stack = []; // keeps objects that must be removed from the list
stack.push (current); // current is in the stack
deleteCurrent (current); // current is not in the list anymore

stack.pop (); // current is not in the stack anymore
console.log (current); // current is still living

// Last edit: trebuia sa-i dau undefined inainte....
current = undefined;
delete (current);
console.log (current); // current is undefined.

}

some ();


View Postlaffin, on 07 iulie 2021 - 10:22, said:

relax, se ocupa garbage collector.

Ok, nu-mi mai bat capul cu asta. Multumesc!

Edited by wolfenste, 07 July 2021 - 10:47.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate