b'\n_START_ARTICLE_\nStack (estruktura ng datos)\n_START_SECTION_\nSekwensiyal(Sequential)\n_START_PARAGRAPH_\nAng ganitong klase ng pag-implementa ng stack ay gumagamit ng isang dimensiyonal na array kung saan ang huling elemento sa array ang taas ng stack at dito rin nagdadagdag at nagtatanggal ng elemento gamit ang mga operasyon. Medyo limitado ang pag gamit ng ganitong implementasyon dahil nakapirme ang sukat(size) ng array at kailangan subaybayan ang laki ng array._NEWLINE_Ang sumusunod ang halimbawang implementasyon ng mga operasyon ng stack gamit ang array sa wikang pamprogramang C._NEWLINE_typedef struct {_NEWLINE_    size_t size;_NEWLINE_    int items[STACKSIZE];} STACK;_NEWLINE_void push(STACK *ps, int x){_NEWLINE_    if (ps->size == STACKSIZE) {_NEWLINE_        fputs("Error: stack overflow\\n", stderr);_NEWLINE_        abort();_NEWLINE_    } else_NEWLINE_        ps->items[ps->size++] = x;}_NEWLINE_int pop(STACK *ps){_NEWLINE_    if (ps->size == 0){_NEWLINE_        fputs("Error: stack underflow\\n", stderr);_NEWLINE_        abort();_NEWLINE_    } else_NEWLINE_        return ps->items[--ps->size];}\n_START_SECTION_\nPinagdugtong na listahan (linked list)\n_START_PARAGRAPH_\nAng ganitong klase ng pag-implementa ng stack ay gumagamit ng linked list kung saan gumagamit ng tinatawag na nodo (node) upang itago ang data at ang susunod na address ng node. Ang maganda dito ay maaari kang magdagdag ng magdagdag ng data hanggang sa kaya ng memory di tulad ng sa array sapagkat address ng susunod na node ang itinatago mo sa bawat node._NEWLINE_Ang sumusunod ang halimbawang implementasyon ng mga operasyon ng stack gamit ang linked list sa wikang pamprogramang C._NEWLINE_typedef struct stack {_NEWLINE_    int data;_NEWLINE_    struct stack *next;} STACK;_NEWLINE_void push(STACK **head, int value){_NEWLINE_    STACK *node = malloc(sizeof(STACK));  /* create a new node */_NEWLINE__NEWLINE_    if (node == NULL){_NEWLINE_        fputs("Error: no space available for node\\n", stderr);_NEWLINE_        abort();_NEWLINE_    } else {                                      /* initialize node */_NEWLINE_        node->data = value;_NEWLINE_        node->next = empty(*head) ? NULL : *head; /* insert new head if any */_NEWLINE_        *head = node;_NEWLINE_    }}_NEWLINE_int pop(STACK **head){_NEWLINE_    if (empty(*head)) {                          /* stack is empty */_NEWLINE_       fputs("Error: stack underflow\\n", stderr);_NEWLINE_       abort();_NEWLINE_    } else {                                     /* pop a node */_NEWLINE_        STACK *top = *head;_NEWLINE_        int value = top->data;_NEWLINE_        *head = top->next;_NEWLINE_        free(top);_NEWLINE_        return value;_NEWLINE_    }}'