File: Stack.h

package info (click to toggle)
dc-qt 0.2.0.alpha-4
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,948 kB
  • ctags: 5,361
  • sloc: cpp: 28,936; makefile: 19
file content (52 lines) | stat: -rw-r--r-- 704 bytes parent folder | download | duplicates (4)
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
#ifndef STACK_H__
#define STACK_H__

template<typename T>
class Stack
{
public:
  Stack() {
    m_data = new T[1000];
    m_size = 1000;
    m_top = 0;
  }
 
 Stack(int iSize) {
    m_data = new T[iSize];
    m_size = iSize;
    m_top = 0;
 }

  ~Stack() {delete[] m_data;}

  T pop() {
    return m_data[--m_top];
  }
  void push(T d)
  {
    m_data[m_top++] = d;
    if(m_top < m_size) return;
    expand();
  }
  int size() {return m_top;}
  int capacity() {return m_size;}
  

private:
  T* m_data;
  int m_top;
  int m_size;

  void expand() {
    T* newdata = new T[2*m_size];
    memcpy(newdata,m_data,sizeof(T)*m_size);
    delete[] m_data;
    m_data = newdata;
    m_size*=2;
  }
};




#endif