Jump to content
Hostul a fost schimbat. Daca vedeti serverul offline readaugati rpg.b-zone.ro sau 141.95.124.78:7777 in clientul de sa-mp ×

[C] Stiva - stack


TLG George
 Share

Recommended Posts

Stiva este o listă cu o politică de acces specială: adăugarea sau ștergerea unui element se face la un singur capăt al listei, numit vârful stivei. Elementul introdus primul în stivă poartă numele de baza stivei.

 

Declarație:

 

typedef struct node
{
    int key;
    struct node *next;
} NodeT;

 

Inițializarea stivei se face în funcția main:

 

NodeT *stack = NULL;

 

Principalele operații pe stivă sunt următoarele:

 

push - adăugarea unui element în vârful stivei utilizând o listă simplu înlănțuită.

 

void push(NodeT** stack, int key)
{
    NodeT* p;
    p=(NodeT*)malloc(sizeof(NodeT));
    p->key=key;
    if(*stack==NULL)
    {
        p->next=NULL;
        *stack=p;
    }
    else
    {
        p->next=*stack;
        *stack=p;
    }

}

 

pop - ștergerea unui element din vârful stivei utilizând o listă simplu înlănțuită.

int pop(NodeT** stack)
{
    if((*stack)->next==NULL)
    {
        NodeT* q=*stack;
        *stack=NULL;
        free(*stack);
        return q;
    }
    else
    {
        NodeT* p, *q;
        q=*stack;
        p=(*stack)->next;
        (*stack)->next=NULL;
        *stack=NULL;
        free(*stack);
        *stack=p;
        return q;
    }
    return -1;
}

 

Afișarea stivei

 

void print_stack_contents(NodeT* stack)
    {
        while(stack != NULL)
        {
            printf("%d ", stack->key);
            stack = stack->next;
        }
        printf("\n");
    }

 

Să luăm un exemplu. Vom efectua următoarele operații:

 

1. În funcția main adăugăm numerele 8, 4, 3, 6 prin intermediul funcției push și afișăm stiva.

2. Scoatem primele 2 elemente apelând de două ori funcția pop și afișăm stiva.

3. Adăugăm numerele 2, 6 prin intermediul funcției push și afișăm stiva.
4. Apelăm de 3 ori funcția pop și după acest pas stiva ar trebui să conțină un singur element, și anume pe 8.

 

Rezultatul in consolă:

 

vivZbc6.png

 


 

 

 

Link to comment
Share on other sites

Va multumesc pentru sustinere, dar va rog ca pe viitor sa evitati comentariile cu "+1", incercati sa lasati o recenzie macar intr-o propozitie. Multumesc! :) 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.