Polecenie 1

Zapoznaj się z prezentacją przedstawiającą użycie stosu zaimplementowanego za pomocą listy jednokierunkowej niecyklicznej w realizacji algorytmu konwersji zapisu infiksowego na odwrotną notację polskąD8zD8PhYJodwrotną notację polską. Algorytm zapisany w pseudokodzie znajdziesz w e‑materiale Dynamiczne struktury danychDINsybcX5Dynamiczne struktury danych.

Specyfikacja problemu:

Dane:

  • wyrazenie – łańcuch znaków; zapis infiksowy wyrażenia arytmetycznego, w którym znak spacji występuje przed i po każdym operatorze

Wynik:

  • wyrażenie infiksowe wypisane w odwrotnej notacji polskiej

R19rTjPwgVb121
a
1
Polecenie 2

Na podstawie informacji z sekcji „Przeczytaj” oraz powyższej prezentacji napisz i uruchom program konwertujący podane wyrażenie infiksowe na postfiksowe. W programie użyj stosu zaimplementowanego za pomocą omówionego w sekcji „Przeczytaj” interfejsu Deque i klasy ArrayDeque.

Specyfikacja problemu:

Dane:

  • wyrazenie – łańcuch znaków; zapis infiksowy wyrażenia arytmetycznego, w którym znak spacji występuje przed i po każdym operatorze

Wynik:

  • wyrażenie infiksowe wypisane w odwrotnej notacji polskiej.

Działanie programu przetestuj dla następującego wyrażenia: (31 + 4) * 7.

Przykładowy wynik działania programu:

Linia 1. Wyrażenie infiksowe dwukropek otwórz nawias okrągły 31 plus 4 zamknij nawias okrągły asterysk 7. Linia 2. Wyrażenie postfiksowe dwukropek 31 4 plus 7 asterysk.
R1OxMESwEG9GT
Polecenie 3

Zapoznaj się z prezentacją przedstawiającą użycie jednokierunkowej listy cyklicznej w symulacji problemu Flawiusza. Algorytm zapisany w pseudokodzie znajdziesz w e‑materiale Dynamiczne struktury danychDINsybcX5Dynamiczne struktury danych.

Specyfikacja problemu:

Dane:

  • n – liczba naturalna; liczba elementów kręgu

  • k – liczba naturalna; liczba oznaczająca pierwszy eliminowany element oraz liczbę przejść do następnego eliminowanego elementu

Wynik:

  • wypisany numer elementu, który pozostał w kręgu

R1aRyhAub6QD21
a
21
Polecenie 4

Przyjmijmy, że do symulacji problemu Flawiusza używamy dwukierunkowej listy cyklicznej o znanym rozmiarze n. Zaimplementuj metody dodaj(), usun() oraz wypisz() uwzględniające dwukierunkowość listy. Po uruchomieniu program powinien wypisywać zawartość listy przed każdym usunięciem węzła, a na końcu pozycję węzła, który pozostał na liście.

Specyfikacja problemu:

Dane:

  • – liczba naturalna; rozmiar listy cyklicznej

  • k – liczba naturalna; liczba oznaczająca pierwszy eliminowany element oraz liczbę przejść do następnego eliminowanego elementu

Wynik:

  • zawartość listy przed każdym usunięciem węzła oraz pozycja węzła, który pozostał na liście

Działanie programu przetestuj dla n = 8k = 3.

Przykładowy wynik działania programu:

Linia 1. 1 2 3 4 5 6 7 8. Linia 2. 1 2 4 5 6 7 8. Linia 3. 1 2 4 5 7 8. Linia 4. 2 4 5 7 8. Linia 5. 2 4 7 8. Linia 6. 4 7 8. Linia 7. 4 7. Linia 8. 7.
Rf6CTDDuJei2R
Polecenie 5

Zapoznaj się z prezentacją przedstawiającą użycie niecyklicznej listy dwukierunkowej w algorytmie leksykograficznego sortowania wyrazów. Algorytm zapisany w pseudokodzie znajdziesz w e‑materiale Dynamiczne struktury danychDINsybcX5Dynamiczne struktury danych.

Specyfikacja problemu:

Dane:

  • wyrazy – tablica lub lista zawierająca ciągi znaków – wyrazy do uporządkowania

Wynik:

  • wypisane w porządku leksykograficznym wyrazy

RVhSBiS8gUG7P1
e
1
Polecenie 6

Metoda wstaw() zaimplementowana w prezentacji dotyczącej sortowania leksykograficznego wykonuje w pętli while jedno porównanie, które wcześniej wykonywane jest w metodzie sortuj().

Zaimplementuj taką wersję tej metody, która nie wykona zbędnego porównania.

Specyfikacja problemu:

Dane:

  • wyrazy – tablica lub lista zawierająca ciągi znaków – wyrazy do uporządkowania

Wynik:

  • wyrazy wypisane przed posortowaniem i po sortowaniu w porządku leksykograficznym

Działanie programu przetestuj dla wyrazów: "dynamiczne", "Struktury", "danych", "Java".

Przykładowy wynik działania programu:

Linia 1. dynamiczne Struktury danych Java. Linia 2. danych dynamiczne Java Struktury.
RdCGclP30zcav