-
Notifications
You must be signed in to change notification settings - Fork 0
/
stack.c
72 lines (59 loc) · 835 Bytes
/
stack.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
*
* stack.c
*
*
*
* 08/14/01
*
*/
#include <stdlib.h>
#include "stack.h"
/*
* 新規スタック割り付け
*/
XStack* newXStack (void)
{
XStack* st = (XStack*) getmem (sizeof (XStack));
st->sp = 0;
return st;
}
/*
* スタック解放
*/
void releaseXStack (XStack* xs)
{
memfree (xs);
}
/*
* プッシュ
*/
void xpush (XStack* xs, void* s)
{
if (xs->sp == STACKSIZE)
warn ("XStack overflow"); /* see xml.y */
else
xs->stack[xs->sp++] = s;
}
/*
* ポップ
*/
void* xpop (XStack* xs)
{
if (xs->sp == 0) {
warn ("XStack underflow"); /* see xml.y */
return NULL;
}
return xs->stack[--xs->sp];
}
/*
* ポップ
*/
void* xtop (XStack* xs)
{
if (xs->sp == 0) {
/*_warning ("XStack is empty");*/
return NULL;
}
return xs->stack[xs->sp-1];
}