Stack și Queue în C

Pentru că aveam nevoie la lecție de o implementare pentru stack și coada, le-am implementat în C.

Implementarea stack se afla în namespace-ul dis, (dan iftodi stack):
Definiția structurii pentru stack este:

[cpp]
typedef struct stack
{
void *data;
struct stack* prev;
} stack;
[/cpp]

Putem pastra adresa catre orice fel de date pe stack, trebuie doar sa fim atenti sa facem cast.

Exemplu de utilizare pentru stack:
[cpp]

#include “stack.h”
using namespace dis;
int main(int argc, char* argv[])
{
//Declaram 2 variabile integer care le vom adauga in stack
int i1=1;
int i2=2;

//O variabila unde v-om pastra datele extrase din stack
int t=0;

//Adaugam in stack si facem cast catre void*
push( (void*) &i1 );
push( (void*) &i2 );

//stergem primul ultimul element adaugat pe stack si il salvam in t
t = *((int*) pop());

//Afisam elementul extras
printf(“%i “,t);

//Extragem urmatorul element si il salvam in t
t = *((int*) pop());

//Afisam elementul extras
printf(“%i “,t);

//Verificam daca stack-ul este gol, 1 (true) – daca e gol, 0 (false) – daca nu e gol
printf(“Empty: %i”,isEmpty());

return 0;
}

[/cpp]

Implementarea stack se afla în namespace-ul diq, (dan iftodi queue).

Definitia pentru structura queue este:
[cpp]

typedef struct queue
{
void *data;
struct queue *next;
} queue;
[/cpp]

Putem pastra adresa catre orice tip de date in coada, trebuie doar ca si la stack sa facem cast.

Exemplu de utilizare pentru queue (coada):
[cpp]

#include “queue.h”
using namespace diq;
int main(int argc, char* argv[])
{
//Declaram 2 variabile integer care le vom adauga in coada
int i1=1;
int i2=2;
//O Variabila unde vom pastra datele extrase din coada
int t=0;

//Adauga in coada variabile i1 si i2 (facem cast in void*)
insert( (void*) &i1 );
insert( (void*) &i2 );

//Stergem ultimul element adaugat din coada si pastram valoarea in t
t = *((int*) del());

//Afisam elementul
printf(“%i “,t);

//Stergem ultimul element din coada si pastram valoarea in t
t = *((int*) del());

//Afisam elementul
printf(“%i “,t);

//Verificam daca lista e goala, 1 (true) – daca e goala, 0 (false) – daca nu e goala
printf(“Empty: %i”,isEmpty());

return 0;
}

[/cpp]

Download:

[wpdm_file id=1 title=”true” desc=”true”]

[wpdm_file id=2 title=”true”  desc=”true”]

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.