Mitte einer SimpleList

Sduni

Mitglied
Folgendes Problem:

Gegeben sei eine Instanz der SimpleList, die keinen Zykel enthält.
Überlegt, wie man mit Hilfe mehrerer Zeiger auf Listenknoten die Mitte der Liste finden kann, wenn es verboten ist, Listenelemente zu zählen. Wie bei Arrays soll bei einer geraden Anzahl von Elementen das vordere der beiden mittleren Elemente ausgegeben werden.

Ich stehe gerade total aufn Schlauch und hab überhaupt kein Ansatz. Wenn man zählen dürfte, wäre es einfach, aber so? Vielleicht die Schritte von getNext() und setCurrent() oder von increment() zählen? Wäre aber wieder zählen ???:L;(
 
Zuletzt bearbeitet:

Landei

Top Contributor
Java:
Element middle(SimpleList list) {
   while(! list.firstElement().equals(list.lastElement()) && ! list.firstElement().next().equals(list.lastElement()) {
       list.removeFirstElement();
       list.removeLastElement();
   } 
   return list.firstElement();
}
 

Sduni

Mitglied
jop danke, jetzt weiß ich wie ich es machen muss...


Java:
Object middle(SimpleList list) {
   while(!list.isAtEnd()) increment();
   while(!list.head == list.curr){
      if(list.prev == list.head) return list.curr;
      list.reset();
      list.delete();
      while(!list.isAtEnd()) increment();
      list.delete();
      list.reset();
      while(!list.isAtEnd()) increment();
    }return list.head;
}
 
Zuletzt bearbeitet:

Neue Themen


Oben