You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.1 KiB
69 lines
1.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//----------------------------------------------------------------------------- |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef ARRAYSTACK_H |
|
#define ARRAYSTACK_H |
|
#pragma once |
|
|
|
#include <assert.h> |
|
#include "List.h" |
|
|
|
template <class T> class ArrayStack |
|
{ |
|
protected: |
|
T *data; |
|
int m_stackDepth; |
|
int m_maxNumElements; |
|
|
|
public: |
|
ArrayStack( int maxNumElements ) |
|
{ |
|
data = new T[maxNumElements]; |
|
m_maxNumElements = maxNumElements; |
|
m_stackDepth = 0; |
|
assert( data ); |
|
} |
|
|
|
void Push( T elem ) |
|
{ |
|
data[m_stackDepth++] = elem; |
|
if( m_stackDepth > m_maxNumElements ) |
|
{ |
|
printf( "ArrayStack overflow\n" ); |
|
assert( 0 ); |
|
} |
|
} |
|
|
|
T Pop( void ) |
|
{ |
|
if( m_stackDepth == 0 ) |
|
{ |
|
printf( "ArrayStack underflow\n" ); |
|
assert( 0 ); |
|
} |
|
return data[--m_stackDepth]; |
|
} |
|
|
|
bool IsEmpty() |
|
{ |
|
return ( m_stackDepth == 0 ); |
|
} |
|
|
|
int GetDepth() |
|
{ |
|
return m_stackDepth; |
|
} |
|
}; |
|
|
|
|
|
#endif // ARRAYSTACK_H
|
|
|