堆栈的概念:
是一组相同类型数据的集合,并且拥有后进先出的特点,所有的操作都在堆栈顶端进行。
堆栈的基本操作:
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 }