#include #include typedef char *stack_type; // ms windows fixai ;] typedef struct stack_node stack_node; typedef struct stack stack; struct stack_node { stack_type value; stack_node *prev; }; struct stack { stack_node *last; }; void stack_init(stack& stack) { stack.last = NULL; } void stack_push(stack& stack, stack_type value) { stack_node *node = new stack_node; node->value = value; node->prev = stack.last; stack.last = node; }; stack_type stack_pop(stack& stack) { stack_node *node = stack.last; // mums reiks sito adreso, kai valysim adresa if (node == NULL) return NULL; // stekas tuscias stack_type value = node->value; stack.last = stack.last->prev; // ismetame paskutini elementa, paskutiniu elementu tampa pries paskutinis delete node; return value; }; int main(void) { stack stekas; stack_init(stekas); // testuojam stack_push(stekas, "1"); stack_push(stekas, "2"); stack_push(stekas, "3"); stack_push(stekas, "4"); printf("%s \n", stack_pop(stekas)); printf("%s \n", stack_pop(stekas)); printf("%s \n", stack_pop(stekas)); // dabar turetu buti likes vienas elementas stack_push(stekas, "5"); stack_push(stekas, "6"); printf("%s \n", stack_pop(stekas)); printf("%s \n", stack_pop(stekas)); printf("%s \n", stack_pop(stekas)); // stekas jau tuscias printf("%s \n", stack_pop(stekas)); // turetu nuluzti, jei viskas veikia ;]] }