0 Daumen
529 Aufrufe

Aufgabe:

Schreiben Sie einen Algorithmus in Pseudocode der nur mithilfe von Queues feststellt, ob die übergebenen Worte a und b Anagramme zueinander sind.

Der Algorithmus bekommt folgende Parameter mit Übergeben:

Algorithmus(Queue a, Queue b), wobei Queue a und Queue b jeweils die Buchstaben der Wörter enthalten.

Ein Anagramm zu dem Wort Ampel wäre z. B. Palme oder Lampe.

Beschreiben Sie zudem kurz, wie Ihr Algorithmus arbeitet.
Buchstaben (char) können mit den ’==’, ’! =’, ’<’ und ’>’ bzw. ’≤’ und ’≥’ Operatoren verglichen werden.

Also würde z. B. A ≤ B: true zurückgeben.

Avatar von

1 Antwort

+1 Daumen
 
Beste Antwort

Hallo sniiper,

Ich unterstelle zunächst mal, dass eine Queue folgende Methoden hat:

front() - liefert eine Kopie des ersten anstehenden Elements aus der Queue

pop() - löscht dieses Element

push(...) - hängt ein neues Element 'hinten' in die Queue ein

size() - liefert die Anzahl der Elemente in der Queue

Im Prinzip könnte das dann so aussehen.

1. Abfrage ob a.size() = b.size() ist. Falls nein, kann man die Unterfunktion sofort mit 'false' verlassen

2. Schleife, solange a.size() > 0 ist.

3.      Schleife über alle Elemente (size() mal) der Queue b

4.           wenn a.front() = b.front() dann a.pop(), b.pop() und weiter bei 2.)

4a.         b.push(b.front())

4b.         b.pop()

5.      wenn Schleife bei 3) durch ist, verlasse die Funktion mit 'false'

6. wenn a.size() = 0 (siehe 2.), dann verlasse die Funktion mit 'true'

... falls Du dazu noch Fragen hast, so melde Dich bitte.

Gruß Werner

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community