------------------------------------------HEADER PIERWSZY
#pragma once
struct MY_STOS
{
void *wsk_data; //wskaznik do danych typu void *
MY_STOS *wsk_prev; // kolejny elem
};
typedef void(*FreeData)(void *wsk_dat); //Definicja typu: wskaznik do funkcji z prototypem void NazwaFunkcji(void *);
typedef int (CompData)(void * wsk_curData, void * wsk_SearchData);
void stack_int(FreeData wsk_fun_free);
void stack_free();
MY_STOS* stack_push(void* wsk_dat);
MY_STOS stack_pop();
----------------------------------------------KONIEC HEADERA PIERWSZEGO, POCZATEK DRUGIEGO
#pragma once
enum MY_MESSAGES
{
MY_MESS_ALLOC_ERROR_STOS,
MY_MESS_BAD_NUMBER,
MY_MESS_TOTAL
};
void my_mess_fun(enum MY_MESSAGES mess);
------------------------------------------------------POCZATEK KODU
#include "my_stos.h"
#include "my_msg.h"
#include "stdafx.h"
int last_elem = 0;
static MY_STOS *top = NULL;
FreeData wsk_freedata;
void stack_int(FreeData wsk_fun_free)
{
top = NULL;
wsk_freedata = wsk_fun_free;
}
void stack_free()
{
MY_STOS *p = top, *ptmp = NULL;
while (p)
{
(*wsk_freedata)(p->wsk_data); // zwolnienie danych z biezacego elemntu
ptmp = p; //pomocnicza
p = p->wsk_prev; // przestawienie wskaznika
free(ptmp); // zwolnienie biezacego elementu
}
top = NULL;
}
MY_STOS *stack_push(void *wsk_dat)
{
//alokujemy pamiec dla nowego elementu kolejki
MY_STOS* current = (MY_STOS*)malloc(sizeof(MY_STOS));
if (!current)
{
my_mess_fun(MY_MESS_ALLOC_ERROR_STOS);
return NULL;
}
current->wsk_prev = top; // nowy element wskazuje na gorny
top = current; // potem zostanie gornym
return current;
}
MY_STOS stack_pop()
{
MY_STOS temp;
MY_STOS *next;
if (!top)
{
temp.wsk_data = NULL;
temp.wsk_prev = NULL;
}
else
{
next = top->wsk_prev;
temp.wsk_data = top->wsk_data; // pobieramy wartosc
free(top);
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}