15
1 Univerzitet u Tuzli Mašinski fakultet RAČUNARI I PROGRAMIRANJE APSTRAKTNE STRUKTURE PODATAKA osnovni pojmovi, C# primjeri Dr. Salko Ćosić maj 2013

Programiranje u fortranu I

  • Upload
    karbon1

  • View
    67

  • Download
    5

Embed Size (px)

DESCRIPTION

Osnove programiranja u FortranuPredavanja iz Programiranja i racunara

Citation preview

  • 1

    Univerzitet u Tuzli Mainski fakultet

    RAUNARI I PROGRAMIRANJE

    APSTRAKTNE STRUKTURE PODATAKA osnovni pojmovi, C# primjeri

    Dr. Salko osi

    maj 2013

  • 2

    Sadraj: Apstraktne strukture podataka

    Nizovi i matrice

    Records (Slog)

    List (linkovane liste)

    Stack (Stek)

    Queue (Redovi)

    Tree (Stablo)

    Grafovi C# - primjeri, klase

  • 3

    Struktura podataka je matematiki (logiki) nain organizacije podataka. Ona definie nain njihovog pohranjivanja i upotrebe od strane programa (programera). Pravilo odabrana struktura bitno utie na efikasnost programa. To se naroito istie kod sloenih aplikacija. Od strukture zavise i algoritmi tj.metodi za obradu podataka. Osnovne strukture: Linearne (lanovi su u nizu) , sortiranje, merge

    1. Polje (array) niz, matrica, vektor i nelinearne strukture 2. Slog (record) 3. Lista 4. Stog (stack) 5. Red (queue) 6. Stablo (binarno stablo) 7. Graf

    Osnovne operacije nad strukturom podataka:

    1. Pristup (itanje) i modificiranje podataka Matrice: primjer definisanja 2. Pretraivanje 3. Proirivanje (dodavanje novih podataka) 4. Brisanje 5. Sortiranje 6. Spajanje i razdvajanje vie struktura

  • 4

    RECORDS (Slog) Sekvenca (niz) podataka razliitog tipa, redovi tabele heterogenih podataka (data members, polja ili atributi) Primjer: relacijska baza podataka

    Integer String#1 String#2 Real integer

    114 Salko osi 14578.25 136.22.35

    124 **** **** 124758.256 36.22.55

    Realizacija: vie paralelnih nizova sa elementima istog tipa... POVEZANE LISTE (linked list)

    Struktura iji svaki element sadri podatak i pokaziva adrese slijedeeg elementa. Redoslijed elemenata je ureen pokazivaima (pointers) koji sadre adrese slijedeeg elementa. Spremanje u memoriji ne mora biti u skladu sa redoslijedom elemenata. Svaki element sadri podatak i pokaziva.

  • 5

    Prvi element liste naziva se razliitim imenima kao to je glava, poetak ili prvi vor (head, front, first node). Krajnji vor se naziva rep ili krajnji vor liste (tail, end ili last node). Zbog linearne strukture liste svaki vor osim prvog i zadnjeg ima svog prethodnika i sljedbenika. vor na kome se trenutno izvodi neka operacija nazivamo tekuim vorom ili tekua pozicija u listi. Osnovne operacije na listi: Insert(L,e): ubacuje vor sa informacijom prije trenutne pozicije Delete(L): brie trenutni vor RetrieveInfo(L): vraa informaciju o trenutnom voru A. Insertion To insert a node X between the nodes A and B: .Create a link from X to B. .Create a link from A to X,

  • 6

    B. Deletion To delete a node X between A and B:

    Create a link from A to B, Remove node X

    Linkovi izmeu vorova: 1. Single linked lists : Svaki vor sadri dva linka prema prethodnom i slijedeem voru 2. Double linked lists : Svaki vor sadri samo link prema narednom voru 3. Circular lists: rep je linkovan sa glavom (zatvorena lista) STACKS (STEK) Definition: Poseban sluaj liste kod koje je dodavanje ili oduzimanje elemenata mogue samo na vrhu structure. (LIFO: last in - first out)

  • 7

    REDOVI (QUEUE) Sekvence elemeneta istog tipa. Prvi snimljeni element je i prvi dostupni element. (FIFO - first in first out) Novi elementi se dodaju na jednom kraju a oduzimaju na drugom kraju (linearna struktura) Implementira se jednim nizom i sa dvije varijable koje pokazuju pocetak i kraj reda.

  • 8

    STABLO (TREE): konaan skup od n (n0) elemenata (vorova - node) izmeu kojih postoji sljedea strukturna veza:

    1. jedan vor se zove korijen (root) stabla,

    2. ostali vorovi (ne uzimajui u obzir korijen) su podijeljeni u m (m0) disjunktnih skupova T1, T2, ..., Tm, pri emu je svaki od tih skupova takoe stablo. Stabla T1, T2, ..., Tm se zovu podstabla.

    Skup od 9 vorova, vor A je prethodnik vorova B i C, odnosno vorovi B i C su sljedbenici vora A. vorovi koji nemaju svoje sljedbenike (djecu) zovu se listovi (LEAF) H, J, D, G, F.

    Stepen vora je broj nasljednika (djece) tog vora.

    Duina puta izmeu dva vora je broj grana izmeu dva vora.

  • 9

    Nivo stabla je broj generacija sljedbenika.

    Visina stabla je broj nivoa od korijena do najudaljenijeg lista (4 u primjeru).

    Ureeno stablo je stablo kod koga je bitan raspored podstabala, a kod neureenog stabla je to nebitno.

    Struktura Stablo omoguava uspostavljanje hijerarhije izmeu elemenata. Primjer: organizacija direktorija na HD, organizacija kompanija, vojska i dr. BINARNO STABLO

    Binarno stablo je ureeno stablo u kome svaki vor ima 0, 1 ili 2 nasljednika (maksimalno dva nasljednika).

    Osnovne operacije za rad na binarnim stablima moemo grupisati u sljedee tri grupe: - operacije kreiranja binarnog stabla (konstruktorske operacije), - operacije postavljanja upita nad binarnim stablima (predikatske operacije), - operacije selektovanja dijelova binarnog stabla (selektorske operacije).

  • 10

    Svaki vor sadri informacije i linkove za vorove sljedbenike i roditeljski vor. Osnovne operacije:

    Search uporeivabje vrijednosti i nastavak lijevo ili desno Insertion ubacivanje novog vora na kraju stabla Deletion - brisanje

    Mogunost zamjene stabla sloenom listom linkova, pogodno za kompjutersku implementaciju

    Tabelarni nain prikaza stabla

  • 11

    GRAFOVI (GRAPHS)

    Univerzalni nain povezivanja elemenata

    Sastoji se od skupa vorova i skupa linija za povezivanje (edges, bridovi, ivice)

    Vrlo pogodni za modeliranje objekata, sistema i procesa

    vorovi mogu imati imena i atribute

    Edges (bridovi) spajaju dva vora (veze) mogu biti imenovane (labeled) i imati smjer

    Graf je generalnija (optija) struktura od stabla Primjena: Linked list Tree (instance of graph) Flowcharts (dijagram toka programa) Mape puteva (GPS) Electrine sheme Montane sheme Sadraj planova, ekonomija, vojne operacije ***

    Vertices: A,B,C,D Edges: AB, AC, BC, CD Usmjereni i ne-usmjereni grafovi

  • 12

    Matrino predstavljanje grafa Neusmjereni graf Usmjereni graf Matrica nije simetrina

  • 13

    // C# implementacija: u stek se upisuju brojevi od 1 -n a zatim se isti "vade" iz steka using System; using System.Collections; namespace ConsoleApplication // imenski prostor za kolekciju klasa { class Program // osnovna klasa { public static void Main() // metod main { Console.Write("n= "); int n=int.Parse(Console.ReadLine()); // izbor (unosenje) broja clanova n Stack intStack = new Stack(); // konstruktor steka for (int i = 1; i

  • 14

    using System; // popunjavanje reda 1-n i praznjenje reda using System.Collections; namespace MyProgram // imenski prostor za kolekciju klasa { class Program // osnovna klasa { public static void Main() // metod main { Console.Write("n= "); // upis broja clanova reda int n = int.Parse(Console.ReadLine()); // citanje broja clanoca "n" Queue intQ = new Queue(); // formiranje objekta red, konstruktor for (int i = 1; i

  • 15

    Pitanja:

    1. Nabroji osnovne apstraktne strukture podataka 2. Definicija strukture podataka 3. Osnovne operacije nad apstraktnim strukturama podataka 4. Definicija i shema povezane liste 5. Definicija i shema binarnog stabla 6. Objasni pojam "stek" 7. Primjer zamjene binarnog stabla linkovanom listom 8. Definicija i shema reda 9. Definicija i shema grafa 10. Mogunosti primjene grafova 11. Matrino predstavljanje grafa

    ******************************************************** Literatura:

    S. Lipschutz: Theory and Problems of data Structures, Mc Graw Hill Company, 1998

    Grady Booch: Object-Oriented Analysis and Design with Applications, Addison-Wesley 2007

    Michel de Champlain C# 2.0: Practical Guide for Programmers, Elsevier 2005

    Matkovi S. urii M.: Osnovi programiranja u okruenju grafikih operativnih sistema, programski jezik C#, BEOGRAD 2006