【數據結構】堆棧的基本操作


堆棧的概念:
是一組相同類型數據的集合,並且擁有后進先出的特點,所有的操作都在堆棧頂端進行。

堆棧的基本操作:

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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM