程式扎記: [C 範例代碼] Stack example code in C

標籤

2013年2月21日 星期四

[C 範例代碼] Stack example code in C


來源自 這裡
範例代碼:
  1. #include   
  2. #include   
  3.   
  4. struct  
  5. {  
  6.   int pt;  
  7.   int buffer[256];  
  8. } Stack_int;  
  9.   
  10. int Stack_int_Size()  
  11. {  
  12.   return Stack_int.pt;  
  13. }  
  14.   
  15. void Stack_int_Init()  
  16. {  
  17.   Stack_int.pt =0;  
  18.   memset(Stack_int.buffer,0,sizeof(int)*256);  
  19. }  
  20.   
  21. bool Stack_int_Is_Empty()  
  22. {  
  23.   if(Stack_int.pt ==0)  
  24.     return true;  
  25.   return false;  
  26. }  
  27.   
  28. bool Stack_int_Is_Full()  
  29. {  
  30.   if(Stack_int.pt >=255)  
  31.     return true;  
  32.   return false;  
  33. }  
  34.   
  35. bool Stack_int_Push(int data)  
  36. {  
  37.   if(Stack_int_Is_Full())  
  38.     return false;  
  39.   Stack_int.buffer[Stack_int.pt] = data;  
  40.   Stack_int.pt++;  
  41.   return true;  
  42. }  
  43.   
  44. bool Stack_int_Pop(int *data)  
  45. {  
  46.   if(Stack_int_Is_Empty())  
  47.     return false;  
  48.   Stack_int.pt--;  
  49.   *data = Stack_int.buffer[Stack_int.pt];  
  50.   
  51.   return true;  
  52. }  
  53.   
  54.   
  55. int main() {  
  56.   int data;  
  57.   Stack_int_Init();  
  58.   printf("\t[Info] Push 10...\n");  
  59.   Stack_int_Push(10);  
  60.   printf("\t[Info] Push 20...\n");  
  61.   Stack_int_Push(20);  
  62.   printf("\t[Info] Stack size=%d:\n", Stack_int_Size());  
  63.   while(Stack_int_Pop(&data))  
  64.     {  
  65.       printf("\t[Info] Pop: %d...\n", data);  
  66.     }  
  67.   return 0;  
  68. }  
執行結果:
$ ./a.out
[Info] Push 10...
[Info] Push 20...
[Info] Stack size=2:
[Info] Pop: 20...
[Info] Pop: 10...

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!