Implementacija stoga pomocu polja - PowerPoint PPT Presentation

1 / 12
About This Presentation
Title:

Implementacija stoga pomocu polja

Description:

Title: Poga anje brojeva Funkcija rand() vra a slu ajan broj izme u 0 i RAND_MAX. (Obi no je RAND_MAX jednak 32767). Ako elimo dobiti slu ajan prirodan broj ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 13
Provided by: soic3
Category:

less

Transcript and Presenter's Notes

Title: Implementacija stoga pomocu polja


1
Implementacija stoga pomocu polja
  • Na predavanjima je uveden apstraktni tip podataka
    stog i napravljen C pseudokod za jednu njegovu
    varijantu. Napisati funkcije koje obavljaju
    zadane operacije na stogu upotrebom polja za
    primjer s predavanja.
  • include ltstdio.hgt
  • include ltstdlib.hgt
  • define MAXLENGTH 4
  • typedef int elementtype
  • typedef struct stack stackptr
  • typedef struct stack STACK
  • void MakeNull(stackptr s)
  • int Empty(stackptr s)
  • void Push(elementtype x, stackptr s)
  • void Pop(stackptr s)
  • elementtype Top(stackptr s)
  • void PrintErrorAndTerminate(char errormsg)

2
  • struct stack
  • int top
  • elementtype elementsMAXLENGTH
  • void MakeNull(stackptr s)
  • s-gttop MAXLENGTH
  • int Empty(stackptr s)
  • if (s-gttop MAXLENGTH)
  • return 1
  • else
  • return 0
  • void Push(elementtype x, stackptr s)

3
  • void Pop(stackptr s)
  • if (Empty(s))
  • PrintErrorAndTerminate("Pop Stack je
    prazan!")
  • else
  • s-gttop
  • elementtype Top(stackptr s)
  • if (Empty(s))
  • PrintErrorAndTerminate("Top Stack je
    prazan!")
  • return(s-gtelementss-gttop)
  • void PrintErrorAndTerminate(char errormsg)
  • printf("s\n", errormsg)
  • exit(-1)

4
  • int main()
  • STACK s
  • MakeNull(s)
  • Push(1, s)
  • Push(2, s)
  • Push(3, s)
  • Push(4, s)
  • printf("d\n", Top(s))
  • Pop(s)
  • printf("d\n", Top(s))
  • Push(5, s)
  • printf("d\n", Top(s))
  • Pop(s)
  • printf("d\n", Top(s))
  • Pop(s)
  • printf("d\n", Top(s))
  • Pop(s)
  • printf("d\n", Top(s))

5
Još jedan primjer stoga ostvarenog poljem
  • Stog duljine 6 elemenata se puni generiranim
    slucajnim brojem ako je on neparan, ukoliko je
    generiran parni broj, vrh stoga se skine.
    Ispisati sadržaj stoga nakon svakog koraka te
    upozoriti ukoliko je stog prazan ili pun.
  • include ltstdio.hgt
  • include ltstdlib.hgt
  • include lttime.hgt
  • include ltctype.hgt
  • define MAXSTOG 6
  • int dodaj (int stavka, int stog, int n, int
    vrh)
  • if (vrh gt n-1) return 0
  • (vrh) // ne pisati vrh !
  • stogvrh stavka
  • return 1

6
  • int skini (int stavka, int Stog, int vrh)
  • if (vrh lt 0) return 0
  • stavka Stogvrh
  • (vrh)--
  • return 1
  • void main (void)
  • int novi, stari, stog MAXSTOG
  • int vrh,i,ch
  • vrh -1 // prazan stog
  • printf (Generiraju se slucajni nenegativni
    cijeli brojevi.\n")
  • printf ("Neparni brojevi upisuju se na stog\n")
  • printf ("Parni broj znaci skidanje sa stoga\n")
  • printf ("Za obavljanje jednog koraka pritisnuti
    ENTER, za kraj bilo koji znak\n\n")
  • srand ((unsigned) time (NULL))

7
  • else
  • printf ("Stog")
  • for (i0 i lt vrh i) printf (" d",
    stogi)
  • putchar ('\n')
  • novi rand ()
  • if (novi2) // Neparni se upisuju na stog
  • printf ("Dodaj d\n", novi)
  • if (!dodaj (novi, stog, MAXSTOG, vrh))
    printf("Stog je pun!\n")
  • else // Parni broj znaci skidanje sa
    stoga
  • printf ("Skini...")
  • if (skini (stari, stog, vrh))
  • printf ("Skinut d\n", stari)
  • else
  • printf("Stog je prazan!\n")

8
Implementacija stoga pomocu pokazivaca
  • Napisati program za realizaciju stoga pomocu
    pokazivaca iz ulazne datoteke se citaju podaci i
    upisuju u stog. Ispisati vrijednosti elemenata u
    stogu i lokacije na kojima se nalaze. Nakon toga
    skidati podatke iz stoga sve dok ne ostane
    prazan.
  • include ltstdio.hgt
  • include ltmalloc.hgt
  • typedef int tip
  • struct cv
  • tip element
  • struct cv sljed
  • typedef struct cv cvor
  • cvor dodaj (cvor vrh, tip element)
  • cvor novi
  • if ((novi (cvor ) malloc(sizeof(cvor))) !
    NULL)
  • novi-gtelement element
  • novi-gtsljed vrh
  • printf("Na adresu p dodao sam d, a sljedeci
    je p\n",novi, element, vrh)

9
  • cvor skini (cvor vrh, int element)
  • cvor pom
  • element vrh-gtelement
  • printf ("S adrese p ", vrh)
  • pom vrh-gtsljed
  • free (vrh) // oslobodi vrh
  • return pom // vrati novi vrh
  • void main (void)
  • FILE fi
  • int j
  • int element // element stoga
  • cvor vrh, p// pokazivac na vrh i pomocni
    pokazivac
  • fi fopen ("UlazZaStog.txt", "r")
  • if (fi)
  • vrh NULL

10
  • else
  • printf("Nema vise mjesta za stog\n")
  • break
  • fclose (fi)
  • p vrh
  • // Skidanje elemenata sa stoga
  • while (vrh)
  • vrh skini (vrh, element)
  • printf ("skinuo sam element d\n",
    element)
  • else
  • printf ("Nema ulazne datoteke\n")
  • exit (1)

11
Zadaci
  • 1) Napisati funkcije za dodavanje i skidanje
    elementa u stog realiziran poljem u koje stane
    najviše MAXZ zapisa. U glavnom programu izvesti
    ucitavanje podataka za element stoga s tastature
    kao i ispisivanje elementa stoga koji je skinut
    (npr. unijeti nekoliko elemenata u stog, a zatim
    skinuti i ispisati svaki element sve dok stog ne
    ostane prazan). Element stoga je zapis o
    položenom ispitu studenta
  • maticni broj (long)
  • ime i prezime (241 znak)
  • sifra predmeta (int)
  • ocjena (short)
  • 2) U memoriji oblikovati linearnu listu (pomocu
    pokazivaca). U pojedini cvor liste upisati
  • maticni broj studenta (int)
  • ime i prezime (301 znakova)
  • ocjena (int)
  • pokazivac na sljedeci cvor
  • Napisati funkciju koja ce iz liste ispisati sve
    zapise koji sadrže odredenu ocjenu (samo 2, 3, 4
    ili 5).

12
  • 3) Napisati funkciju za oblikovanje linearne
    jednostuko povezane liste (pokazivaci) u koju su
    upisani šifra artika (cijeli broj) i naziv
    artikla (151 znakova). Lista je poredana po
    šifri artikala. Napisati funkciju za pronalaženje
    i ispis clana liste sa zadanom šifrom artikla.
    Ulazni argumenti su glava liste i šifra artikla,
    a izlazni argument je naziv artikla. Funkcija
    vraca rezultat 0 ako šifra nije nadena, a 1 ako
    jest.
Write a Comment
User Comments (0)
About PowerShow.com