堆棧的概念:
是一組相同類型數據的集合,並且擁有后進先出的特點,所有的操作都在堆棧頂端進行。
堆棧的基本操作:
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 }