# Mitte einer SimpleList



## Sduni (5. Jan 2010)

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;(


----------



## Landei (5. Jan 2010)

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


----------



## Sduni (5. Jan 2010)

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



```
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;
}
```


----------

