堆栈的概念:是一组相同类型数据的集合,并且拥有后进先出的特点,所有的操作都在堆栈顶端进行。
堆栈的基本操作:
Init 创建一个空堆栈Push 把数据压入堆栈顶端Pop 从堆栈顶弹出数据Top 从栈顶取数据Empty 判断堆栈是否为空堆栈,是则返回true,否则返回falseFull 判断栈是否为满,是则返回true,否则返回false
用数组实现堆栈:
1 typedef struct st_stack{
2 int size;
3 int *data;
4 int top;
5 }T_Stack;
6
7 int StackInit( T_Stack *ptStack, int *data, int size)
8 {
9 ptStack->size = size;
10 ptStack->data = data;
11 ptStack->top = 0;
12
13 return 0;
14 }
15
16 int StackPush( T_Stack *ptStack, int data )
17 {
18 if( ptStack->top == ptStack->size )
19 {
20 return -1;
21 }
22
23 ptStack->data[ptStack->top++] = data;
24
25 return 0;
26 }
27
28 int StackPop( T_Stack *ptStack, int *data )
29 {
30 if( ptStack->top == 0 )
31 {
32 return -1;
33 }
34
35 *data = ptStack->data[--ptStack->top];
36
37 return 0;
38 }
39
40 int StackTop( T_Stack *ptStack, int *data )
41 {
42 if( ptStack->top == 0 )
43 {
44 return -1;
45 }
46
47 *data = ptStack->data[ptStack->top - 1];
48
49 return 0;
50 }
51
52 int StackIsEmpty( T_Stack *ptStack )
53 {
54 return ( ptStack->top == 0 );
55 }
56
57 int StackIsFull( T_Stack *ptStack )
58 {
59 return ( ptStack->top == ptStack->size );
60 }
