JavaRush /Java Blog /Random-TL /Sariling pagpapatupad ng dobleng naka-link na LinkedList,...
alexnjc
Antas

Sariling pagpapatupad ng dobleng naka-link na LinkedList, malalim na pag-clone.

Nai-publish sa grupo
Ang gawain ay lumikha ng iyong sariling pagpapatupad ng isang solong o dobleng naka-link na listahan ng mga bagay, ngunit hindi mo magagamit ang mga karaniwang pagpapatupad ng uri ng LinkedList. Sumulat ng mga pamamaraan para sa malalim na pag-clone ng listahang ito, tingnan kung paano na-clone ang dahon. Hindi mo magagamit ang tagabuo ng klase upang lumikha ng isang kopya. Kapag nagtatanggal ng mga elemento mula sa isang kopya ng isang listahan, ang orihinal na listahan ay hindi dapat magbago, iyon ay, ang mga kopya ay dapat na ganap na independyente sa bawat isa. Anong mga pamamaraan ang magiging pinakamainam? Sumulat ako ng isang grupo ng mga code, ang lahat ay tila gumagana maliban sa malalim na pag-clone. Mayroong maraming mga glitches kapag binabago ang listahan :-( //List as FILO stack public class MyLinkedList implements Cloneable, Serializable { private Node objects; // top of stack private Node first; // bottom of stack ... Inner class Node // FILO class Node implements Cloneable { private Object o; private Node next; private Node prev; public Node(Object o) { if (o !=null){ this.o = o; next = null; prev = null; System.out.println("First element Node created!"); System.out.println("o= "+o +" next= " + next+" prev= "+ prev); } else throw new IllegalArgumentException("Null element not allowed here!"); } public Node(Object o, Node next) { if (o == null) throw new IllegalArgumentException("Null element not allowed here!"); this.o = o; if (next != null) { this.next = next; this.prev = null; this.next.setPrev(this); System.out.println("element Node created!"); System.out.println("o= "+o +" next= " + next+" prev= "+ prev); } else System.out.println("next == null ?!!"); } public Object getO () { return o; } public Node getNext(){ return next;} public Node getPrev(){ return prev;} public void setO (Object o) { this.o = o;} public void setNext(Node next) { this.next = next;} public void setPrev(Node prev) { this.prev = prev;} ...
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION