/*
Estou postando esse biblioteca derivada de uma exercício do 2 bimestre sobre lista encadeada, que vai ser usado para revolver o desafio que o Eduardo deixou
*/
#ifndef _LISTA_H
#define _LISTA_H
#include
#include
using namespace std;
class no{ //Classe NÓ
private:
int valor;
no *prox;
public:
no(){valor=0;prox=NULL;}
void setvalor(int v){valor=v;}
void setprox (no *p){prox=p;}
int getvalor(){return valor;}
no *getprox(){return prox;}
};
class fila{ // Classe FILA
private:
no *inicio;
no *final;
public:
fila() {inicio=final=NULL;}
void push_final(int v);
int pop_final();
} ;
void fila::push_final(int v){
no *aux;
aux=new(no);
aux->setprox(NULL);
aux->setvalor(v);
if (final!=NULL)
{
final->setprox(aux);
final=aux;
}
else
inicio=final=aux;
}
int fila::pop_final(){
no *aux1;
no *aux;
if(inicio!=NULL) //verifico se há nós na fila
{
int res=0; //cria variavel para guardar o valor do no e inicializo ela...
aux1=inicio; //posiciono os ponteiros no inicio e no final da fila
aux=final;
if(inicio!=final) //verifico se a pilha possui 2 nós ou mais...
{
while(aux1->getprox()!=final)
/*se a condição acima for verdadeira(ou seja, possui mais de um nó....uso este WHILE para navegar com o AUX1 até o penultimo nó da fila... */
{
aux1=aux1->getprox(); //comando para o AUX1 passar para o nó seguinte....
}
//qd sair do WHILE estarei com o AUX1 no penultimo nó e o AUX no ultimo nó....
res=aux->getvalor(); //pego o valor do ultimo nó e jogo na variavel res...
delete(aux); //libero o espaço de memoria que era ocupado pelo AUX (ultimo nó)
aux1->setprox(NULL); //Configuro o PROX do AUX1 para ser NULL( porque ele passou a ser
//o ultimo nó)....
final=aux1; //Posiciono o final da fila no nó representado por AUX1
return res; //retorna o valor da variavel res
}
else//Caso a fila possua somente um nó...
{
res=aux->getvalor(); //variavel res recebe o valor nó...
delete(aux); //libero o espaço de memoria do nó....
inicio=final=NULL; //como nao tera nós na fila configuro o INICIO e FINAL para NULL
return res; //retorna o valor da variavel res....
}
}
else
/* caso não haja nós na fila o metodo deve retornar -999 ....(tentei retornando NULL mas dá erro)*/
{
return -999 ;
}
}
#endif
quinta-feira, 13 de setembro de 2007
fila.h
Postado por
Paulo
às
15:11
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário