1. 程式人生 > 實用技巧 >棧的簡單實現

棧的簡單實現

  •   可以實現先進後出的結構

  分類

    靜態棧:線性表類似的,連續儲存

    動態棧:鏈式棧,可分散儲存

top指標指向最上面元素的上一個位置

空棧:top指標==bottom指標

 1 #include <iostream>
 2 using namespace std;
 3 
 4 typedef struct stack
 5 {    
 6     int* top, *base;
 7 }stack;
 8 
 9 void initstack(stack& s)
10 {    
11     s.base = (int*)malloc(sizeof
(int)); 12 s.top = s.base; 13 } 14 15 void push(stack& s, int e) //入棧 16 { 17 *(s.top++) = e; 18 } 19 20 void pop(stack& s) 21 { 22 if(s.top!=s.base) 23 s.top--; 24 else 25 { 26 printf("棧已空"); 27 } 28 } 29 30 bool isempty(stack s) 31 { 32 return s.base
== s.top; 33 } 34 35 int gettop(stack s) 36 { 37 return *(--s.top); 38 } 39 40 void travel(stack s) 41 { 42 while (s.base != s.top) 43 printf("%d\n", *(--s.top)); 44 } 45 46 int main() 47 { 48 stack s; 49 initstack(s); 50 push(s, 1); 51 push(s, 2); 52 push(s, 3
); 53 push(s, 4); 54 push(s, 5); 55 travel(s); 56 pop(s); 57 travel(s); 58 cout<<isempty(s)<<endl; 59 cout << gettop(s)<<endl; 60 pop(s); 61 pop(s); 62 pop(s); 63 pop(s); 64 cout << isempty(s) << endl; 65 }