All pastes #54091 Raw Edit

Miscellany

public c v1 · immutable
#54091 ·published 2006-05-07 19:34 UTC
rendered paste body
#include <stdlib.h>#include <stdio.h>typedef char *stack_type;typedef struct stack_node stack_node;typedef struct stack stack;struct stack_node{		stack_type value;		stack_node *prev;	}; struct stack{	stack_node *last;	int count;};stack *stack_init(){	stack *stack = calloc(1, sizeof(stack));	stack->last = NULL;	stack->count = 0;	return stack;}void stack_push(stack *stack, stack_type value){	stack_node *node = calloc(1, sizeof(stack_node));	node->value = value;	node->prev = stack->last;	stack->last = node;	stack->count++;};stack_type stack_pop(stack *stack){	stack_node *node = stack->last; // mums reiks sito adreso, kai valysim adresa	stack_type value = node->value;		stack->last = stack->last->prev; // ismetame paskutini elementa, paskutiniu elementu tampa pries paskutinis	free(node); // isvalome atminti	stack->count--;	return value;};int main(void){	stack *stekas = stack_init();		// 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 ;]]	return 0;}