4
Stog je niz za čije članove vrijedi pravilo FIFO što bi značilo First In First Out što će reći da kada dodajemo novi član u stog svi ostali članovi se pomjeraju za jedno mjesto tako da je novi član uvijek na vrhu a onaj koji prvi uđe on je uvijek na dnu. I kada se ispisivaju na zaslon, ispisivaju se naopačke osim ako ne radimo ispis unatrag. Sve radnje sa stogovima se vrše u zasebnim funkcijama. Zadatak 1. Napisati program koji će u inicijalizirati stog u kojeg može stati 20 elemenata zatim u zasebnoj funkciji unijeti 3 elementa u taj stog te ga ispisati u glavnom programu pozivajući zasebnu funkciju. Rješenje #include <stdio.h> ( *vrh )++; stog [ *vrh ] = broj; void push ( int broj , int stog [] , int *vrh ) { } if ( *vrh < 0 ) return 0; *broj = stog [ *vrh ]; ( *vrh )--; return 1; int pop ( int *broj , int stog [] , int *vrh ) { } int tmp_stog [ 20 ]; int tmp_vrh = -1; int tmp; printf ( " %d \n " , tmp ); push ( tmp , &tmp_stog , &tmp_vrh ); while ( pop ( &tmp , stog , vrh) ) { } push ( tmp , stog , vrh ); while ( pop ( &tmp , &tmp_stog , &tmp_vrh ) ) { } void ispis ( int stog [] , int *vrh ) { } Stog 10. siječnja 2015. 20:51 Algoritmi i strukture podataka Stranica 1

Stog - algoritmi

Embed Size (px)

DESCRIPTION

Lekcija o stogovima iz kolegija algoritmi i strukture podataka

Citation preview

  • Stog je niz za ije lanove vrijedi pravilo FIFO to bi znailo First In First Out to e rei da kada dodajemo novi lan u stog svi ostali lanovi se pomjeraju za jedno mjesto tako da je novi lan uvijek na vrhu a onaj koji prvi ue on je uvijek na dnu. I kada se ispisivaju na zaslon, ispisivaju se naopake osim ako ne radimo ispis unatrag. Sve radnje sa stogovima se vre u zasebnim funkcijama.

    Zadatak1.Napisati program koji e u inicijalizirati stog u kojeg moe stati 20 elemenata zatim u zasebnoj funkciji unijeti 3 elementa u taj stog te ga ispisati u glavnom programu pozivajui zasebnu funkciju.

    Rjeenje

    #include

    ( *vrh )++;

    stog [ *vrh ] = broj;

    void push ( int broj , int stog [] , int *vrh ) {

    }

    if ( *vrh < 0 ) return 0;

    *broj = stog [ *vrh ];

    ( *vrh )--;

    return 1;

    int pop ( int *broj , int stog [] , int *vrh ) {

    }

    int tmp_stog [ 20 ];

    int tmp_vrh = -1;

    int tmp;

    printf ( " %d \n " , tmp );

    push ( tmp , &tmp_stog , &tmp_vrh );

    while ( pop ( &tmp , stog , vrh) ) {

    }

    push ( tmp , stog , vrh );

    while ( pop ( &tmp , &tmp_stog , &tmp_vrh ) ) {

    }

    void ispis ( int stog [] , int *vrh ) {

    }

    Stog10. sijenja 2015. 20:51

    Algoritmi i strukture podataka Stranica 1

  • }int stog [ 20 ];

    int vrh = -1;

    push ( 1 , &stog , &vrh );push ( 8 , &stog , &vrh );push ( 15 , &stog , &vrh );

    ispis( &stog , &vrh );

    return 0;

    int main(void) {

    }

    Zadatak2.Napisati program koji e unijeti proizvoljne elemente u stog , u zasebnoj funkciji nai zbroj tih elemenata te ga ispisati na zaslon u glavnom programu.

    Rjeenje

    #include

    ( *vrh )++;stog [ *vrh ] = broj;

    void push ( int broj , int stog [] , int *vrh ) {

    }

    if ( *vrh < 0 ) return 0;*broj = stog [ *vrh ];( *vrh )--;return 1;

    int pop ( int *broj , int stog [] , int *vrh ) {

    }

    int suma = 0;int tmp_stog [20];int tmp_vrh = -1;int tmp;

    suma = suma + tmp;push ( tmp , &tmp_stog , &tmp_vrh );

    while ( pop ( &tmp , stog , vrh ) ) {

    }

    push ( tmp , stog , vrh );

    while ( pop ( &tmp , &tmp_stog , &tmp_vrh ) ) {

    }

    int suma ( int stog [] , int *vrh ) {

    Algoritmi i strukture podataka Stranica 2

  • return suma;

    }

    int zbroj;int stog [20];int vrh = -1;

    push ( 8 , &stog, &vrh );push ( 5 , &stog, &vrh );push ( 2 , &stog, &vrh );push ( 14 , &stog, &vrh );push ( 18 , &stog, &vrh );

    zbroj = suma ( &stog , &vrh );

    printf ( " Zbroj elemenata u stogu je: %d " , zbroj );

    return 0;

    int main(void) {

    }

    Zadatak3.Napisati program u kojemu se inicijalizira stog sa proizvoljnim elementima a program ispisuje sve elemente koji su vei od 6

    Rjeenje

    #include

    ( *vrh )++;stog [ *vrh ] = broj;

    void push ( int broj , int stog [] , int *vrh ) {

    }

    if ( *vrh < 0 ) return 0;*broj = stog [ *vrh ];( *vrh )--;return 1;

    int pop ( int *broj , int stog [] , int *vrh ) {

    }

    int tmp_stog [50];int tmp_vrh = -1;int tmp;

    printf ( " %d \n " , tmp);push ( tmp , &tmp_stog , &tmp_vrh );

    while ( pop ( &tmp , stog , vrh ) ) {

    }

    void ispis ( int stog [] , int *vrh ) {

    Algoritmi i strukture podataka Stranica 3

  • push ( tmp , stog , vrh );

    while ( pop ( &tmp , &tmp_stog , &tmp_vrh ) ) {

    }}

    int tmp_stog [50];int tmp_vrh = -1;int tmp;

    push ( tmp , &tmp_stog , &tmp_vrh );

    if ( tmp >= 6 ) {

    }

    while ( pop ( &tmp , stog , vrh ) ) {

    }

    push ( tmp , stog , vrh );

    while ( pop ( &tmp , &tmp_stog , &tmp_vrh ) ) {

    }

    void manje_od ( int stog [] , int *vrh ) {

    }

    int stog [50];int vrh = -1;

    push( 2 , &stog , &vrh );push( 5 , &stog , &vrh );push( 8 , &stog , &vrh );push( 12 , &stog , &vrh );push( 3 , &stog , &vrh );

    printf ( " Elementi stoga su: \n " );

    ispis ( &stog , &vrh );

    printf ( " Elementi vei od 6 su: \n ");

    manje_od ( &stog , &vrh );

    ispis ( &stog , &vrh );

    return 0;

    int main(void) {

    }

    Algoritmi i strukture podataka Stranica 4