Hallo.
Ich blicke bisher bei Listen noch nicht so ganz durch. Deshalb komme ich auch mit meinen Aufgaben nicht so ganz zurecht.
1. eine Funktion remove_all, die aus einer Liste alle Vorkommen einer eingegeben Zahl löscht:
Ich habe dies sowohl für das dynamische Array als auch für die verkettete Liste. Es funktioniert auch. Aber ich soll zusätzlich die Frage beantworten, worin sich beide Implementierungen unterscheiden. Ich sehe aber keinen Unterschied.
2. eine Funktion length, die die Länge einer Liste zurückgibt
für das dynamische Array:
für verkettete Liste
3. eine Funktion split_list, die ausgehend von einer Liste zwei neue dynamisch erstellt, wobei die erste neue Liste alle Elemente der alten bis zu einem bestimmten Element enthält, die zweite neue dann dieses Element selbst und den Rest. So eine Funktion habe ich auch, allerdings soll die alte Liste nicht verändert werden, aber ich denke meine Funktion tut dies (ich konnte es nicht ausprobieren, weil immer noch Syntax-Fehler angezeigt werden). Ich bin auf die Idee gekommen, dass ich ja zuerst die alte Liste kopieren könnte, allerdings weiß ich nicht, wie ich das implementieren soll
Wäre für Hilfe echt dankbar.
Ich blicke bisher bei Listen noch nicht so ganz durch. Deshalb komme ich auch mit meinen Aufgaben nicht so ganz zurecht.
1. eine Funktion remove_all, die aus einer Liste alle Vorkommen einer eingegeben Zahl löscht:
C++:
void remove_all(list_type *list, int value) {
while (index_of(list, value) != -1){
delete_at(list, index_of(list, value));
}
}
Ich habe dies sowohl für das dynamische Array als auch für die verkettete Liste. Es funktioniert auch. Aber ich soll zusätzlich die Frage beantworten, worin sich beide Implementierungen unterscheiden. Ich sehe aber keinen Unterschied.
2. eine Funktion length, die die Länge einer Liste zurückgibt
für das dynamische Array:
C++:
int length(list_type *list){
int i;
i=list->size;
return(i);
}
für verkettete Liste
C++:
int length(list_type *list){
int k=0;
element_type *el;
el= list->head;
while(el->next != NULL){
el= el->next;
k++; //die Schleife wird k-mal durchlaufen
}
k++;
return (k);
}
3. eine Funktion split_list, die ausgehend von einer Liste zwei neue dynamisch erstellt, wobei die erste neue Liste alle Elemente der alten bis zu einem bestimmten Element enthält, die zweite neue dann dieses Element selbst und den Rest. So eine Funktion habe ich auch, allerdings soll die alte Liste nicht verändert werden, aber ich denke meine Funktion tut dies (ich konnte es nicht ausprobieren, weil immer noch Syntax-Fehler angezeigt werden). Ich bin auf die Idee gekommen, dass ich ja zuerst die alte Liste kopieren könnte, allerdings weiß ich nicht, wie ich das implementieren soll
C++:
void split_list(list_type *list, int value, list_type *before, list_type *after){
element_type *el;
el=list->head;
int i;
i=index_of(list, value);
int j;
for(j=0; j<i; i++){
append(before, element_at(list, j));
}
j=i;
while(el!=NULL){
append(after, element_at(list, j));
j++;
el=el->next;
}
}
Wäre für Hilfe echt dankbar.