• Nie Znaleziono Wyników

Autor: Zofia Kruczkiewicz, p.325 C3 Ćwiczenie 5, Algorytmy i struktury danych 1

N/A
N/A
Protected

Academic year: 2021

Share "Autor: Zofia Kruczkiewicz, p.325 C3 Ćwiczenie 5, Algorytmy i struktury danych 1"

Copied!
1
0
0

Pełen tekst

(1)

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

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];

};

void Inicjalizacja(stos & Stos);

{działanie: inicjuje stos

warunki wstępne: Stos wskazuje 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 1, 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;}

Autor: Zofia Kruczkiewicz, p.325 C3 Ćwiczenie 5, Algorytmy i struktury danych 1

1

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

b) Opracować funkcję wyprowadzającą zawartość struktury typu tosoba na ekran (parametrem funkcji jest zmienna typu tosoba). Zainicjować zmienną stud wartościami

Wyznaczyć czasy działania algorytmów w przypadku sortowania tablicy liczb całkowitych (wykorzystać funkcję pomiaru czasu). Wyprowadzić na ekran czasy

W programie głównym zdefiniować tablicę tab typu ttab oraz zmienną ile typu unsigned, w której pamiętana jest liczba struktur wprowadzonych do tablicy

c) zapisującą do pliku tekstowego losowe struktury typu tosoba oraz znaki przejścia do nowej linii (’\n’); otwarcie i zamknięcie pliku zrealizować wewnątrz

Prostsza wersja zadania może polegać na dokonaniu konwersji pliku tekstowego do binarnego, sortowaniu pliku binarnego i zapisaniu wyniku sortowania ponownie do pliku

Jeżeli operacja przydziału pamięci dla t1 i t2 zakończyła się pomyślnie (wskaźniki t1 i t2 są różne od NULL), to zainicjować tablicę t1 losowymi znakami o kodach należących

a) dodającą element o podanej wartości klucza na koniec kolejki; przydzielić pamięć, wpisać daną x do klucza, zmodyfikować wskaźniki kolejki (pocz, kon);