hp2FEM
0.1
|
00001 #ifndef ACSTACK_H 00002 #define ACSTACK_H 00003 00004 #include "acdp.h" 00005 00006 /* 00007 ** definicao de uma pilha generica - Salgado - 08/93 00008 */ 00009 00010 /* 00011 ** Os metodos da classe estao no arquivo acStack.CPP 00012 */ 00013 00014 class acNodeStack 00015 { 00016 friend class acStack; 00017 00018 private: 00019 acNodeStack *next; // pointer para o proximo no' 00020 void *dados; // pointer para os dados 00021 }; 00022 00023 class acStack 00024 { 00025 protected: 00026 acNodeStack *Head; // inicio da pilha 00027 int SizeDados; // numero de bytes dos dados 00028 00029 public: 00030 00031 /******************************************** 00032 * Construtor e destrutor da pilha generica * 00033 ********************************************/ 00034 00035 /* 00036 ** Construtor 00037 ** 00038 ** Formas de uso: 00039 ** 00040 ** acStack Stack; 00041 ** Cria sem nada. 00042 ** 00043 ** acStack Stack(sizeof(tipo)); 00044 ** Cria pilha e armazena tamanho dos dados. 00045 ** 00046 */ 00047 acStack() 00048 { 00049 Head = 0; 00050 SizeDados = 0; 00051 } 00052 00053 acStack(int s) 00054 { 00055 Head = 0; 00056 SizeDados = s; 00057 } 00058 00059 /* 00060 ** Destrutor 00061 ** 00062 ** Deleta os elementos da pilha 00063 */ 00064 ~acStack() 00065 { 00066 Clear(); 00067 } 00068 00069 /* 00070 ** Funcao para inserir um no'. 00071 ** Deve-se passar um pointer para os dados a serem inseridos. 00072 ** Erros = 0 - nao alocou memoria 00073 ** = -1 - nao inicializada (sem tamanho dos dados) 00074 */ 00075 int Push(void *a); 00076 00077 /* 00078 ** Funcao para retirar um no'. 00079 ** Deve-se passar um pointer para uma area existente 00080 ** Erros = 0 - pilha vazia 00081 */ 00082 int Pop(void *a); 00083 00084 /* 00085 ** Faz uma copia do dado no topo da pilha 00086 ** Deve-se passar um pointer para uma area existente 00087 ** Erros = 0 - pilha vazia 00088 */ 00089 int Copy(void *a); 00090 00091 /* 00092 ** Funcao para limpar uma pilha 00093 */ 00094 void Clear(); 00095 00096 /* 00097 ** Funcao para inicializar pilha sem parametros 00098 */ 00099 void SetStackData(int s) 00100 { 00101 Head = 0; 00102 SizeDados = s; 00103 } 00104 00105 /* 00106 ** funcao para verificar existencia de pilha 00107 */ 00108 int Exist() 00109 { 00110 return(Head != 0); 00111 } 00112 }; 00113 00114 #endif