carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.930 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 66 von 2963 (2%) |<   <   >   >|

Autor AlphaBetaGamma
Datum 29.11.02, 13:42
Betreff Doppelt-Verkettete-Liste kopieren (clone) - wie ???


Liebes Forum,

im Rahmen unserer Grundlagenvorlesung in Informatik haben wir eine einfach verkettete Liste implementiert, die den Zweck eines Stacks erfüllen soll. War ja ganz leicht.

Ich habe mich zu Hause nun daran gemacht, das Ganze doppelt verkettet zu machen. Funktioniert soweit jetzt auch prima (vielleicht teilweise !elegant gelöst, dennoch ...).

Ein Problem hab ich jetzt aber - meine clone()-Methode will nicht *grrrrrr*. Da die Ganze Liste ja mit Referenzen arbeitet, wird mein origial-Strang immer "gelöscht", da ich diese Elemente ja "durchloope", um die neue Kette aufzubauen. Ich habe den Code unten mal dargestellt. Clone ist innerhalb der while jetzt leer, weil ich bald durchgedreht bin ... vielleicht habt ihr für die while-Schleife vorschläge?!

Würde mich SEEEEEHR über Vorschläge freuen, vielen Dank im Vorraus, Markus ;-)



package de.fhw.bi.stack;

import de.fhw.bi.adt.CharStack;

public class ListCharStack implements CharStack {
    
    // -------------------------------------
    // ------------ ListElement ------------
    // -------------------------------------
    public class ListElement {
        
        // ------------ FELDER ------------
        
        private char _data;
        private ListElement _next;
        private ListElement _previous;
        
        // ------------ ACCESSOREN ------------
        
        public ListElement getNext() {
            return _next;
        }
        
        public ListElement getPrevious() {
            return _previous;
        }
        
        public char getData() {
            return _data;
        }
        
        // ------------ MUTATOREN ------------
        
        public void setNext(ListElement anElement) {
            _next = anElement;
        }
        
        public void setPrevious(ListElement anElement) {
            _previous = anElement;
        }
        
        public void setData(char aData) {
            _data = aData;
        }
    }
    
    
    // -------------------------------------
    // ------------ ListCharStack ----------
    // -------------------------------------
    
    // ------------ FELDER ------------
    
    private ListElement _last;
    private ListElement _first;
    private int _size;
    
    // ------------ CONSTRUKTOR ------------
    
    public ListCharStack() {
        _first = null;
        _last = null;
        _size = 0;
    }
    
    // ------------ ACCESSOREN ------------
    
    /**
    * @see de.fhw.bi.adt.charStack#isEmpty()
    */

    public boolean isEmpty() {
        if (_size == 0)
        return true;
        else
        return false;
    }
    
    /**
    * @see de.fhw.bi.adt.charStack#top()
    */

    public char top() {
        if (_last != null)
        return _last.getData();
        else
        return (' ');
    }
    
    // ------------ MUTATOREN ------------
    
    /**
    * @see de.fhw.bi.adt.charStack#push(char)
    */

    public void push(char c) {
        ListElement neu = new ListElement();
        neu.setData(c);
        if (_last != null) {
            neu.setNext(null);
            neu.setPrevious(_last);
            _last.setNext(neu);
            _last = neu;
            } else {
            _last = neu;
            _first = neu;
        }
        _size++;
    }
    
    /**
    * @see de.fhw.bi.adt.charStack#push(char)
    */

    public void pop() {
        ListElement temp = new ListElement();
        if (_size >= 3) {
            _last.getPrevious().setPrevious(
            _last.getPrevious().getPrevious());
            _last.getPrevious().setNext(null);
            _last = _last.getPrevious();
            } else if (_size >= 2) {
            _last = _first;
            //_last.setNext(null);
            } else {
            _last = null;
            _first = null;
        }
        _size--;
    }
    
    
    public Object clone() throws CloneNotSupportedException {
        ListCharStack kopie = this;
        ListCharStack temp = new ListCharStack();
        while (kopie._size>0) {
            
        }
        return temp;
    }
    
    public boolean equals(ListCharStack list) {
        ListCharStack kopie = this;
        boolean test = true;
        if (this._size != list._size)
        return false;
        while (kopie._size > 0) {
            if (kopie.top() != list.top()) {
                test = false;
                break;
            }
            kopie.pop();
            list.pop();
        }
        return test;
    }
    
}



 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com