最近一直在用堆棧,可是沒有去想過它是怎么實現的,也就看了一下牛人們是怎么實現堆棧的,也就寫了個自己的堆棧類,以便加強記憶,
以上的堆棧類是用的鏈式結構。
1
public class MyLinkStack {
2
/**
3
* 內部類,用以存儲用戶調用<code>MyLinkStack#push(Object)</code><br>
4
* 傳進來的對象。
5
*/
6
private static class Node {
7
/**
8
* 用戶需要堆棧的對象
9
*/
10
Object item;
11
/**
12
* 存儲前一個Node對象
13
*/
14
Node next;
15
/**
16
* 默認的構造函數
17
*
18
*/
19
Node() {
20
this.item = null;
21
this.next = null;
22
}
23
/**
24
* 創建一個新的Node對象,用于存儲用戶push的數據
25
*
26
* @param item
27
* @param next
28
*/
29
Node(Object item, Node next) {
30
this.item = item;
31
this.next = next;
32
}
33
/**
34
* 是否已經到了堆棧底部
35
*
36
* @return
37
*/
38
boolean end() {
39
return this.item == null && this.next == null;
40
}
41
}
42
/**/
43
private Node top = new Node();
44
/**
45
* 向堆棧中存入數據
46
*
47
* @param item
48
*/
49
public void push(Object item) {
50
top = new Node(item, top);
51
}
52
/**
53
* 取出push中的數據
54
*
55
* @return
56
*/
57
public Object pop() {
58
Object result = top.item;
59
if (!top.end()) {
60
top = top.next;
61
}
62
return result;
63
}
64
}

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

53

54

55

56

57

58

59

60

61

62

63

64

以上的堆棧類是用的鏈式結構。