栈的实现(链式结构)Alpha 1.0

栈的实现(链式结构)Alpha 1.0
 1 /**/ /**
 2        Stack(use linked structure to implement)
 3        Version: 1.0
 4        Member function as follow:
 5        size()
 6        push(T)        // inset an elm
 7        pop()        // delete the last elm
 8        empty()         // if it is an empty list
 9        print()
10
11        Use C++ template
12**/

13 #include < iostream >
14 #include < string >
15
16 using   namespace  std;
17 #ifndef STACK_H
18 #define  STACK_H
19
20 template < typename T >
21 struct  Node
22 {
23    T data;
24    Node* next;
25}
;
26
27 template < typename T >
28 class  Stack
29 {
30public:
31    Stack();
32    ~Stack();
33    bool Empty() const return top->next == NULL; }
34    int  Size() const return size; }
35    void Push(const T&);
36    void Pop();
37    void Print() const;
38private:
39    Node<T>* top;
40    int size;
41
42}
;
43
44 template < typename T >  Stack < T > ::Stack()
45 {
46    top = new Node<T>;
47    top->next = NULL;
48    size = 0;
49}

50
51 template < typename T >  Stack < T > :: ~ Stack()
52 {
53    assert(top->next->next != NULL);
54    forint i = 0; i < size; i++ )
55    {
56        Pop();
57        size--;
58    }

59}

60
61 template < typename T >   void  Stack < T > ::Push( const  T &  one)
62 {
63    Node<T>*new_node = new Node<T>;
64    new_node->data = one;
65    new_node->next = top;
66    top = new_node;
67    size++;
68}

69
70 template < typename T >   void  Stack < T > ::Pop()
71 {
72    Node<T>* p = new Node<T>;
73    p = top;
74    top = top -> next;
75    delete p;
76    p = NULL;
77    size--;
78}

79
80 template < typename T >   void  Stack < T > ::Print()  const
81 {
82    cout << "Reverse inputing" << endl;
83    Node<T>* p = new Node<T>;
84     p = top;
85    for(int i = 0; i < size; i++)
86    {
87        cout << p ->data << " " ;
88        p = p-> next;
89    }

90    cout << endl;
91
92}

93
94 #endif
95
96
//Test Function
 1 int  main()
 2 {
 3    using namespace std;
 4    Stack<int> stack;
 5    cout << "----------------Display the stack program-----------------------" << endl;
 6    cout << "\n Initial the stack,please input the number of element to push stack "<< endl;
 7    cout << "number = " ;
 8    int number;
 9    cin >> number;
10    cout << "Secondly input the number in the following\n" << endl;
11    int temp;
12    forint i = 0; i < number; i++ )
13    {
14        cin >> temp;
15        stack.Push(temp);
16    }

17    cout << "You Input As Follow" << endl;
18    stack.Print();
19    cout << "Would you like to display the pop functionYes or No" << endl;
20    string answer;
21    cin >> answer;
22    if( answer == "yes" || answer == "YES" )
23    {
24        stack.Pop();
25        stack.Print();
26    }

27    cout <<"-----------------------------------------------------------------" << endl;
28    system("pause");
29    return 0;
30
31}

32

你可能感兴趣的:(栈的实现(链式结构)Alpha 1.0)