Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #pragma once
00015 #include "maxheap.h"
00016 #include "tab.h"
00017
00019 template<class T> class Stack : public MaxHeapOperators
00020 {
00021 private:
00022 Tab<T> s;
00023
00024 public:
00025
00026 const T& operator[](const int i) const {
00027 DbgAssert(s.Count()-i>0);
00028 return s[s.Count()-i-1];
00029 }
00030 T& operator[](const int i) {
00031 DbgAssert(s.Count()-i>0);
00032 return s[s.Count()-i-1];
00033 }
00034
00039 void Push( T *el ) {
00040 s.Append( 1, el );
00041 }
00042
00047 void Pop( T *el ) {
00048 DbgAssert( s.Count() );
00049 *el = s[s.Count()-1];
00050 s.Delete( s.Count()-1, 1 );
00051 }
00052
00055 void Pop() {
00056 DbgAssert( s.Count() );
00057 s.Delete( s.Count()-1, 1 );
00058 }
00059
00065 void GetTop( T *el ) {
00066 DbgAssert( s.Count() );
00067 *el = s[s.Count()-1];
00068 }
00069
00071 void Clear() {
00072 s.Delete(0,s.Count());
00073 }
00074
00076 int Count() const {
00077 return s.Count();
00078 }
00079
00085 int Remove( int i ) {
00086 assert(i<s.Count());
00087 return s.Delete(s.Count()-1-i,1);
00088 }
00089 };
00090
00091