棧的簡單實現
阿新 • • 發佈:2020-10-08
棧
- 可以實現先進後出的結構
分類
靜態棧:線性表類似的,連續儲存
動態棧:鏈式棧,可分散儲存
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 }