summaryrefslogtreecommitdiff
path: root/src/01/06/min_stack.h
blob: 92899c7797354d8fe7ec76ab29a468f75722435d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct node {
  int data;
  struct node *next;
};

typedef struct node Node;

typedef struct {
  Node *head;
  Node *min;
  int size;
} Stack;

typedef void (*Visitor)(Node *);

Stack *initialize(void);
void push(Stack *self, int data);
int pop(Stack *self);
int size(Stack *self);
int min(Stack *self);
void each(Node *head, Visitor block);
void inspect(Stack *stack);