手工实现栈

缘起

写算法的时候,一般使用的都是c++ stl中的 stack. 但是使用数组手工模拟栈是十分方便的.

分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream>
#pragma warning(disable:4996)
#define LOCAL
using namespace std;

const int MAX_NUM = 105; // 栈中元素最多105个

struct Stack
{
int s[MAX_NUM],top; // top 是栈顶指针

Stack():top(0){}

void push(int x) // 压栈
{
s[top++] = x;
}

void pop() // 弹栈
{
top--;
}

int peer() // 窥顶
{
return s[top-1];
}

bool empty() // 判空
{
return !top;
}
};


int main()
{
#ifdef LOCAL
freopen("d:\\data.in","r",stdin);
#endif
Stack stk;
stk.push(1);
stk.push(2);
stk.push(3);
while(!stk.empty())
{
printf("%d\n", stk.peer());
stk.pop();
}
return 0;
}