jazykc  2013.3
upoljazykc
 All Classes Files Functions Variables Typedefs Macros Pages
Classes | Macros | Typedefs | Functions
dynamicky-zasobnik.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

Go to the source code of this file.

Classes

struct  prvek
 

Macros

#define is_empty(z)   (!(z))
 
#define dup(z)   (z)=pridej((z),vrchol((z)))
 

Typedefs

typedef struct prvek prvek
 

Functions

prvekpridej (prvek *zasobnik, int data)
 
int vrchol (prvek *zasobnik)
 
prvekodeber (prvek *zasobnik)
 
int for_each (prvek *zasobnik, int(*cbk)(int i, int data))
 
int main (void)
 

Detailed Description

Dynamická_práce_s_pamětí

Katedra informatiky, Univerzity Palackého v_Olomouci

   Dynamický zásobník ******

Téma: Dynamická práce s pamětí Procvičované učivo: dynamická alokace paměti, ukazatele, funkce, strukturované datové typy

Napište v jazyku C funkce pro práci s dynamickým zásobníkem. Připomínáme, že je o datovou strukturu, jejíž základem ke prvek, který v sobě kromě dat (při řešení této úlohy postačí jedna položka typu int) obsahuje také ukazatel na prvek, který byl do zásobníku vložen bezprostředně před ním.

Se zásobníkem je možné provádět tyto operace: přidání prvku - funkce prvek pridej(prvek *zasobnik, int data), přečtení dat z vrchoolu zásobníku - funkce int vrchol (prvek zasobnik) a odebrání prvku z vrcholu zásobníku - funkce prvek odeber (prvek zasobnik).

Příklad použití:

int main(){
   prvek* z=NULL;
   int i;
   for (i=1; i<11; i++)
        z = pridej(z, i);
   while (z!=NULL){
        printf("%i\n", vrchol(z));
        z=odeber(z);
   }
   return 0;
}

Povolené knihovny: stdio.h, stdlib.h Alternativy úlohy: dynamická fronta, dynamický seznam honza: dynamicky zasobnik je jednosmerny list

Definition in file dynamicky-zasobnik.c.

Function Documentation

prvek* pridej ( prvek zasobnik,
int  data 
)

prida novy prvek na vrsek, celo seznamu.

Returns
novy prvek, nove celo seznamu, zasobniku

Definition at line 56 of file dynamicky-zasobnik.c.

56  {
57  prvek *novy = malloc(sizeof *novy);//netreba typecast, void* v Cecku je OK!!!
58  novy->data = data;
59  novy->next = zasobnik;
60  return novy;
61 }