uTank-木头
每一个你不满意的现在,都有一个你没有努力的曾经。

堆栈的概念:
是一组相同类型数据的集合,并且拥有后进先出的特点,所有的操作都在堆栈顶端进行。

堆栈的基本操作:

Init 创建一个空堆栈
Push 把数据压入堆栈顶端
Pop 从堆栈顶弹出数据
Top 从栈顶取数据
Empty 判断堆栈是否为空堆栈,是则返回true,否则返回false
Full 判断栈是否为满,是则返回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 }

 

posted on 2020-03-20 11:35  uTank  阅读(3340)  评论(0编辑  收藏  举报