SWUST OJ(1044)
顺序栈基本操作的实现
1 #include <iostream> 2 #include <cstdlib> 3 using namespace std; 4 5 6 typedef struct stackList 7 { 8 int *top, *base; 9 int stack_size; 10 }SqStack; 11 12 13 void Init_stack(SqStack &s, int n) 14 { 15 s.base = (int*)malloc(n*sizeof(int)); 16 if (!s.base) 17 { 18 exit(-2); 19 } 20 s.top = s.base; 21 s.stack_size = n; 22 } 23 24 void Push(SqStack &s, int e) 25 { 26 if(s.top - s.base == s.stack_size) 27 { 28 exit(-2); 29 } 30 *s.top++ = e; 31 } 32 33 void Pop(SqStack &s) 34 { 35 if (s.top == s.base) 36 { 37 exit(-2); 38 } 39 s.top--; 40 } 41 42 int getTop(SqStack s) 43 { 44 if (s.base == s.top) 45 { 46 return -1; 47 } 48 return *--s.top; 49 } 50 51 int main() 52 { 53 SqStack s; 54 int n,c; 55 cin>>n; 56 Init_stack(s,n); 57 58 for (int i = 0; i < n; ++i) 59 { 60 cin>>c; 61 Push(s,c); 62 } 63 int k; 64 cin>>k; 65 66 for (int i = 0; i < k; ++i) 67 { 68 Pop(s); 69 } 70 71 int t = getTop(s); 72 cout<<t; 73 return 0; 74 }
简易方法:
1 #include <iostream> 2 #include <cstdlib> 3 #include <stack> 4 using namespace std; 5 6 int main() 7 { 8 stack<int> s; 9 int n, c, k; 10 cin>>n; 11 for (int i = 0; i < n; ++i) 12 { 13 cin>>c; 14 s.push(c); 15 } 16 17 cin>>k; 18 for (int i = 0; i < k; ++i) 19 { 20 s.pop(); 21 } 22 23 if (s.empty()) 24 { 25 cout<<-1; 26 return 0; 27 } 28 29 cout<<s.top(); 30 return 0; 31 }