Referência ao Ficheiro pqueue.h


Descrição Detalhada

Implementação de uma queue com prioridades.

Esta biblioteca disponibiliza um conjunto de funções que permitem manipular uma queue onde os elementos são inseridos ordenadamente.

Na criação de uma pqueue é necessário especificar a função que compara as os elementos.

int comp(void* key1,void* key2)
(usada pela função pqueueInsert); esta função permite indicar qual o elemento a ser removido: será o menor valor contido na pqueue; pode ser alterada através da função pqueueSetComp.

int comp(void* x1,void* x2)
{
  if(x1&&x2) return strcmp((char*)x1,(char*)x2);
  else return 0;
}

Autor:
Rui Carlos A. Gonçalves <rcgoncalves.pt@gmail.com>
Versão:
1.0.1
Data:
02/2009

Definido no ficheiro pqueue.h.

Ir para o código fonte deste ficheiro.

Estruturas de Dados

struct  SPQueueNode
 Estrutura do nodo da pqueue. Mais...
struct  SPQueue
 Estrutura da pqueue. Mais...

Definições de Tipos

typedef SPQueueNodePQueueNode
 Definição do apontador para os nodos da pqueue.
typedef SPQueuePQueue
 Definição da pqueue.

Funções

PQueue newPQueue (int(*comp)(void *, void *))
 Cria uma pqueue.
int pqueueSetComp (PQueue pqueue, int(*comp)(void *, void *))
 Altera a função que compara os elementos de uma árvore.
void pqueueDelete (PQueue pqueue)
 Elemina uma pqueue.
int pqueueInsert (PQueue pqueue, void *inf)
 Insere um elemento numa pqueue.
int pqueueRemove (PQueue pqueue, void **inf)
 Remove um elemento de uma pqueue.
int pqueueConsult (PQueue pqueue, void **inf)
 Verifica qual o elemento na cabeça de uma pqueue.
int pqueueSize (PQueue pqueue)
 Determina o tamanho de uma pqueue.
int pqueueMap (PQueue pqueue, void(*fun)(void *))
 Aplica uma função aos elementos de uma pqueue começando pela cabeça.
Iterator pqueueIterator (PQueue pqueue)
 Cria um iterador a partir da pqueue.


Documentação das Funções

PQueue newPQueue ( int(*)(void *, void *)  comp  ) 

Cria uma pqueue.

Se não for possível criar a pqueue devolve NULL. Tem que ser especificada a função que compara os elementos da pqueue. Esta função pode ser alterada a qualquer momento, utilizando a função pqueueSetComp.

(Ver descrição das funções)

Parâmetros:
comp função que compara dois elementos.
Retorna:
pqueue inicializada ou NULL.

Definido na linha 13 do ficheiro pqueue.c.

int pqueueConsult ( PQueue  pqueue,
void **  inf 
)

Verifica qual o elemento na cabeça de uma pqueue.

Se a pqueue estiver vazia é colocado o valor NULL em inf.

Atenção:
esta função coloca em inf o endereço da informação que está na cabeça da pqueue; depois de executar esta função é aconselhável fazer uma cópia da informação e passar a trabalhar com a cópia para que não haja problemas de partilha de referências.
Parâmetros:
pqueue pqueue.
inf endereço onde é colocado o resultado.
Retorna:
0 se a pqueue não estiver vazia;
1 se a pqueue estiver vazia.

Definido na linha 134 do ficheiro pqueue.c.

void pqueueDelete ( PQueue  pqueue  ) 

Elemina uma pqueue.

Atenção:
apenas liberta a memória ocupada pela estrutura da pqueue; não liberta o espaço ocupado pelos elementos nela contidos.
Parâmetros:
pqueue pqueue.

Definido na linha 41 do ficheiro pqueue.c.

int pqueueInsert ( PQueue  pqueue,
void *  inf 
)

Insere um elemento numa pqueue.

Verifica se é possível inserir o novo elemento, devolvendo 1 caso não seja possível.

Parâmetros:
pqueue pqueue.
inf endereço do elemento que queremos inserir.
Retorna:
0 se o elemento for inserido;
1 se não for possível alocar espaço para o novo elemento.

Definido na linha 61 do ficheiro pqueue.c.

Iterator pqueueIterator ( PQueue  pqueue  ) 

Cria um iterador a partir da pqueue.

Se ocorrer algum erro a função devolve NULL.

Ver Também:
Iterator
Parâmetros:
pqueue pqueue.
Retorna:
iterador criado ou NULL.

Definido na linha 173 do ficheiro pqueue.c.

int pqueueMap ( PQueue  pqueue,
void(*)(void *)  fun 
)

Aplica uma função aos elementos de uma pqueue começando pela cabeça.

A função fun tem que ser do tipo: void fun(void*).

Parâmetros:
pqueue pqueue.
fun função a ser aplicada.
Retorna:
0 se a pqueue não estiver vazia;
1 se a pqueue estiver vazia.

Definido na linha 157 do ficheiro pqueue.c.

int pqueueRemove ( PQueue  pqueue,
void **  inf 
)

Remove um elemento de uma pqueue.

Permite devolver o elemento removido, caso o valor de inf seja diferente de NULL. Se a pqueue estiver vazia é colocado o valor NULL em inf.

Atenção:
esta função não liberta o espaço ocupado pelo elemento removido.
Parâmetros:
pqueue pqueue.
inf endereço onde é colocado o elemento removido (ou NULL).
Retorna:
0 se o elemento for removido;
1 se a pqueue estiver vazia.

Definido na linha 102 do ficheiro pqueue.c.

int pqueueSetComp ( PQueue  pqueue,
int(*)(void *, void *)  comp 
)

Altera a função que compara os elementos de uma árvore.

O valor de comp não pode ser NULL.

Parâmetros:
pqueue pqueue.
comp nova função.
Retorna:
1 se comp for NULL (não é efectuada qualquer alteração);
0 caso contrário.

Definido na linha 29 do ficheiro pqueue.c.

int pqueueSize ( PQueue  pqueue  ) 

Determina o tamanho de uma pqueue.

Devolve o valor do campo size da pqueue.

Parâmetros:
pqueue pqueue.
Retorna:
número de elementos da pqueue.

Definido na linha 150 do ficheiro pqueue.c.


LibRCG © 2004-2009   Rui Carlos A. Gonçalves