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 }

 

posted @ 2019-04-09 18:06  Ghost4C  阅读(347)  评论(0编辑  收藏  举报