Greife auf kostenlose Karteikarten, Zusammenfassungen, Übungsaufgaben und Altklausuren für deinen Algorithmen und Datenstrukturen Kurs an der Universität Osnabrück zu.
wie kann man werte am ende vom vector einfügen
vector::push_back( wert )
-for ( int wert = 0; wert < 10; wert = wert+1 ) {
zahlen.push_back(wert);
}
wie kann man auf die elemente zugreifen bei vectoren
for ( int index = 0; index < zahlen.size(); index = index+1 ) {
cout << zahlen[index] << " ";
}
wie kann man werte verändern bei vectoren zb 5 zu 42
zahlen[5] = 42;
Mehrere Werte in einem Array hinzufügen
Will man mehrere Werte hinzufügen bietet sich vector::assign(anzahl,wert) an.
-Dabei wird der Vector geleert und anzahl viele Einträge mit dem Wert wert hinzugefügt.
zahlen.assign(5,100);
for ( int index = 0; index < zahlen.size(); index = index+1 ) {
cout << zahlen[index] << " ";
}
was ist ein Dereferenzierungs-Operator ?
das ist wenn man dem Iterator einen Stern voran stellt , alos *it.
-Man sagt, dass der Iterator dereferenziet wird, d.h. man greift auf den Wert zu, auf den er zeigt
was gibt es für zusammengesetze operatoren?(shortcuts)
+=, -=, *=, /= und %=. Diese Verbinden eine entsprechende Rechnung mit einer Zuweisung.
int wert = -42;
cout << (( wert < 0 ) ? 0 : wert) << endl;
was bedeutet das?
Hierbei verwenden wir die folgende Kurzform:
<Bedingung> ? <true-Wert> : <false-Wert>
Dieser Ausdruck prüft die Bedingung. ergibt sie den Wert true, wird der <true-Wert> als Ergebnis des Ausdrucks verwendet, ansonsten der <false-Wert>.
wofür ist der typ auto?
Eine Abkürzung, die sehr praktisch ist, aber auch mit Vorsicht eingesetzt werden sollte ist der Typ auto.
- Mit ihm legt man den Wert einer Variable automatisch durch die Initalisierung mit einem Wert fest.
-Im folgenden Beispiel erhält die Variable w den Typ int, da sie mit einem int initialisiert wird.
auto w = 2; // w hat den Typ int
w = 2;
was ist eine signatur
zb int suche( int gesucht, int feld[], int laenge )
was ist typecast
Beim Typecasting wird eine Variable eines Typs, z. B. ein int, für eine einzelne Operation wie ein anderer Typ, ein char, verhalten. Um etwas zu typisieren, setzen Sie einfach den Variablentyp, den die tatsächliche Variable als Klammer verwenden soll, vor die tatsächliche Variable. (char) a bewirkt, dass 'a' als char fungiert.
Obere Schranke für die Anzahl der benötigten Schleifendurchläufe
Man sucht die kleinste neutrale Zahl i, mit
n/2^i < 1
Laufzeit von Iteratoren
O(1)
Greife kostenlos auf tausende geteilte Karteikarten, Zusammenfassungen, Altklausuren und mehr zu.
Jetzt loslegenBinärbäume
Binärbäume (und auch allgemeinere Bäume) werden immer wieder zur Verwaltung von Daten oder zur Repräsentationen von Strukturen verwendet. Sehr intuitive Beispiele sind Rechenbäume, wie z.B.
arithmetische ausdruck:
- Elemente= Knoten
-Kanten =verbinden jeweils zwei knoten miteinander -> wichtig:in welche richtung knoten verlaufen. Bei Bäumen von oben nach unten
-Wurzel= oberster knoten
-Blätter=knoten von den keine kante aus geht
-Vater und Kind= zwei knoten von einer kante verbunden
-in allgemeinen Bäumen gibt es beliebig viele Kinder
- Die 7 hat zb 3 kinder
- In vielen anwendungen reicht es binärbäume anzuschauen,dh solche bei dem jeder knoten höchstens 2 Kinder hat
- binärbäume können unterschiedliche dinge darstellen
- links oben stellt morsa alphabet dar
-oben mitte ist ein suchbaum, bei dem man mögl. schnell bestimmte elemente zu finden sind
-rechts oben -> kein binärbaum
-links unten ist ein rechenbaum welcher mathematische ausdrücke mit sich bringt
-unten mitte ist ein hafmantcode
-unten rechts ist ein entscheidungsbaum-> prüft ob ein baum äpfel tragen wird
- diese rekusive definition werden wir verwenden um algorithmen auf binären bäumen zu entwickeln
- in der iten ebene des baumes begonnen bei 0 für die wurzel sind höchsten 2 hoch i knoten enthalten
->liegt daran das in jeder ebene doppelt so viel knoten sein können wie in der ebene davor, da jeder knoten max. 2 Kinder hat
- um die Baumstruktur zu speichern hat jeder Knoten 3 weitere zeiger-> ein zu sein vater und 2 zu seinen beiden mögl. kindern
-konstruktor haben evtl knoten mit kindern
-getter u. setter um an daten zu kommen bzw sie zu verändern
- um struktur des binärbaums herstellen zu können haben wir 2 setter set left child und set right child
->außerdem haben wir entsprechende getter
- für den vater haben wir nur ein getter und können ihn nicht direkt setzen, stattdessen müssen wir immer ein kind zu dem vater hinzufügen
-> liegt daaran das wir wissem müssen welches kind wir zu dem vater setzen (das linke oder rechte) und auch daran das wenn wir ein kind setzen wir den vaterknoten korriegieren müssen
- einfacher wenn wir vater dem kind zu weisen statt kind dem vater
- komplette implementierug lassen wir weg, ist einfach man muss achten das man die richtigen zeiger auf die richtigen objekte setzt
- man muss aufpassen wen man dem vater ein kind zu weist und das alte kind kein vater mehr hat. -> muss man entsprechend darauf achten
Melde dich kostenlos an und bekomme Zugang zu der kompletten Zusammenfassung und tausenden Karteikarten!
Für deinen Studiengang Algorithmen und Datenstrukturen an der Universität Osnabrück gibt es bereits viele Kurse, die von deinen Kommilitonen auf StudySmarter erstellt wurden. Karteikarten, Zusammenfassungen, Altklausuren, Übungsaufgaben und mehr warten auf dich!