• Nie Znaleziono Wyników

Zawsze wstawia liczbę przed równą liczbą, jeśli ta jest już w ciągu. W przeciwnym wypadku wstawia ją na początku ciągu.

N/A
N/A
Protected

Academic year: 2021

Share " Zawsze wstawia liczbę przed równą liczbą, jeśli ta jest już w ciągu. W przeciwnym wypadku wstawia ją na początku ciągu. "

Copied!
2
0
0

Pełen tekst

(1)

Kolokwium 2

1. Zbuduj kolejką priorytetową z danego ciągu liczbowego za pomocą algorytmu stogowego wstępującego pokazując ciąg liczbowy w poszczególnych etapach budowy kolejki oraz usuń jeden największy element z kolejki oraz odbuduj strukturę kolejki priorytetowej za pomocą algorytmu zstępującego.

2. Zaprojektuj funkcje Abstrakcyjne typu danych o nazwie Rowny, który:

 Zawsze wstawia liczbę przed równą liczbą, jeśli ta jest już w ciągu. W przeciwnym wypadku wstawia ją na początku ciągu.

 Usuwa dany element- jeśli jest więcej tych elementów, usuwa wszystkie równe zadanej wartości

 Wyszukuje zadany element.

Należy zdefiniować nagłówki funkcji oraz wyspecyfikować je wg zadanego wzoru:

void Nazwa funkcji(parametry funkcji);

{działanie:

warunki wstępne:

warunki końcowe: }

np.

void Inicjalizacja(stos & Stos);

{działanie: inicjuje stos

warunki wstępne: Stos oznacza wskazanie na pierwszy element warunki końcowe: Stos zostaje zainicjowany jako pusty}

Uwaga:

Aby otrzymać oceną 5.0, należy wykonać implementację przynajmniej jednej funkcji zaprojektowanego typu danych w postaci funkcji działających na tablicy. Podczas wstawiania należy rozsuwać elementy, natomiast podczas usuwania należy zsuwać elementy tablicy.

. Przykład

Stos – algorytm

Stos jest jednym z najważniejszych typów danych, które wstawiają i usuwają dane ze zbioru danych w tym samym miejscu zwanym szczytem stosu

1. ETAP 1 - OPIS ADT

Nazwa typu: Stos elementów

Własności typu: Potrafi przechować ciąg elementów o dowolnym rozmiarze Dostępne działania:

Inicjalizacja stosu

Określenie, czy stos jest pusty Dodanie elementu do stosu, Usuwanie ze stosu, Etap 2 - Budowa interfejsu

typedef int dane;

{typ informacji umieszczanej na stosie}

const long N=11;

struct stos { int pierwszy;

dane tab[N];

};

(2)

void Inicjalizacja(stos & Stos);

{działanie: inicjuje stos

warunki wstępne: Stos oznacza wskazanie na pierwszy element warunki końcowe: Stos zostaje zainicjowany jako pusty}

inline int Pusty(stos Stos) { return Stos==NULL; } {działanie: określa, czy stos jest pusty; typ inline, bo często wywoływana

warunki wstępne: Stos jest zainicjowany,

warunki końcowe: funkcja zwraca wartość różną od 0, jeśli stos pusty, w przeciwnym wypadku 0}

int Wstaw( stos& Stos, dane Dana);

{działanie: dodaje element na początek ciągu, zwany szczytem stosu Stos

warunki początkowe: Dana jest daną do wstawienia na szczyt zainicjowanego stosu

warunki końcowe: jeśli to możliwe, funkcja dodaje daną Dana na szczyt stosu i zwraca wartość 1, w przeciwnym wypadku 0 }

dane Usun(stos& Stos);

{działanie: jeśli stos nie jest pusty, usuwa element ze szczytu stosu, czyli element ostatnio wstawiony do stosu warunki początkowe: Stos jest zainicjowanym niepustym stosem

warunki końcowe: funkcja usuwa element na szczycie stosu i zwraca umieszczoną tam daną}

Etap 3. Implementacja stosu za pomocą tablicy

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów w tablicy jest równa pierwszy, to kolejny element jest wstawiany na pozycji pierwszy, o ile jest miejsce w tablicy)

void Inicjalizacja(stos& Stos) { Stos.pierwszy = 0; }

inline int Pusty(stos Stos)

{ return Stos.pierwszy==0; } //stos jest pusty, gdy liczba elementów jest równa zero

int Wstaw(stos& Stos, dane Dana)

{ if (Stos.pierwszy==N) return 0; //nie można wstawić do stosu, gdy jest pełen Stos.tab[Stos.pierwszy++]= Dana;

return 1;

}

dane Usun(stos& Stos) {

int pierwszy= --Stos.pierwszy; //wyznaczenie indeksu elementu usuwanego ze stosu dane d= Stos.tab[pierwszy];

return d;}

Cytaty

Powiązane dokumenty

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów

Pokaż przebieg algorytmów wyszukiwania sekwencyjnego (indeks), binarnego z powtórzeniami (kolejne przedziały) oraz bez powtórzeń (kolejne przedziały) przy

Wyznacz sumę czterech kolejnych początkowych wyrazów tego ciągu Zad. Oblicz x, wiedząc że liczby 2x, x+3, 2x+6 są kolejnymi wyrazami ciągu geometrycznego. Oblicz sumę

Zad. Trzy liczby, które tworzą ciąg arytmetyczny, dają w sumie 39. Jeśli pierwszą i ostatnią liczbę pomniejszymy o 3, zaś od drugiej odejmiemy 5, to otrzymane różnice w tej samej

•Można przestać porównywać elementy, napotkawszy element, który jest nie większy niż wstawiany, bo podtablica z lewej strony jest posortowana – sortowanie adaptacyjne.

Tablica będzie uporządkowana, ponieważ instrukcja 3 poprawnie uporządkuje elementy tablicy od od l-tego do i-1-szego, i-ty jest na właściwej pozycji wobec poprawności

Jeśli jednak szukamy tylko wartości funkcji w określonym punkcie z , to prostsza jest metoda Lagrange’a:..