Jump to content

La mulți ani tuturor copiilor! Quest special aici

Ediția lunii Iunie a concursului WOTM a început. Detalii aici

 

Autentificare în Doi Pași pe serverele de sa-mp. Detalii aici

Autentificare în Doi Pași pe forum. Detalii aici

Recrutăm Designeri Audio și Video. Detalii aici

TLG Grizzly

[C] Stiva - stack

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

 


 

 

 

Share this post


Link to post
Share on other sites

+1

Share this post


Link to post
Share on other sites

+1.

Share this post


Link to post
Share on other sites

+1

Share this post


Link to post
Share on other sites

+1 

Share this post


Link to post
Share on other sites

+1, de folos

Share this post


Link to post
Share on other sites

+1

Share this post


Link to post
Share on other sites

+1

Share this post


Link to post
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! :) 

Share this post


Link to post
Share on other sites

Topic inactiv. Closed.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×

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.