Jump to content
alphasil

Queues - Pergunta de Exame

Recommended Posts

alphasil

Oi

Pedem-me num exame que:

Sabendo que a resolução do problema recorre ao uso de uma Queue, e que a Queue é implementada numa

lista duplamente ligada, defina a estrutura de dados que representa a Queue. Defina a Queue local à função main().

Fiz assim

#include <stdio.h>
#include <stdlib.h>

typedef struct clinica
{
 char nome[100];
 int idade;
 char acomp[100];
 char grau[100];
 char sintomas[100];
 struct clinica *Prox, *Ant;
} fila;

fila *init, *fim;

fila* fVazia()
{
 return NULL;
}

int main()
{
 fila* aux;
 aux=fVazia();

 //printf("Hello world!\n");
 return 0;
}

Está certo ou nem por isso??

Obrigado

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
pmg

Acho que sim ... embora muito, muito incompleto.

Continua que vais no bom caminho.

PS para que sao as variaveis globais `init` e `fim`? Nao precisas delas para nada.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
alphasil

Oi

Como são filas, o prof pôs num exercício variáveis globais.

Está incompleto, que mais fazia falta? Iniciar a lista não é?

Share this post


Link to post
Share on other sites
pmg

Está incompleto, que mais fazia falta?

Acrescentar no principio; acrescentar no fim ... pesquisar ... apagar


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
HappyHippyHippo

Como são filas, o prof pôs num exercício variáveis globais.

Que comichão !!!!!!

O que acabaste de dizer não tem pés nem cabeça. O "prof" pós variáveis globais porque vocês estão a aprender como trabalhar com ponteiros, porque de outro como não existe variáveis globais !!!

Até porque parece que no final do enunciado dita que essa metodologia é para ser alterada

Defina a Queue local à função main().

Para que se definia uma estrutura como lista duplamente ligada (sendo ela manipulada como queue, stack, ou outra semelhante), basta mesmo ter além da informação do objecto na estrutura, os ponteiros para a posição anterior e posterior.

Agora, se perguntas se fazes alguma coisa sem as funções/métodos apropriados de manipulação que lhe confere a denominação de queue, claro que não, e é isso que falta no teu código e que o @pmg refere que falta fazer.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
alphasil

Oi HHH

Mais uma vez obrigado.

Então neste caso é melhor criar um estrutura de dados que vai comportar a outra certa (para filas duplamente ligadas)?

Share this post


Link to post
Share on other sites
HappyHippyHippo

faz assim, com a estrutura que tens que está correta para listas duplamente ligadas sem cabeça) e tenta implementar as seguintes funções:

#include <stdio.h>
#include <stdlib.h>
// Definição de estrutura de dados de cada elemento da fila
// é usada para facilitar a manipulacao dos dados nas funções da fila
// nao quer dizer que a tua implementacao esteja mal, simplesmente
// tornaria a lista de argumentos das funcoes  mais extensa
typedef struct
{
   char nome[100];
   int idade;
   char acomp[100];
   char grau[100];
   char sintomas[100];
} registo;

// Definicao da estrutura de dados que implementa a fila duplamente ligada
typedef struct clinica
{
   // Conjunto de dados a ser guardados num elemento da fila
   registo reg;
   // Ponteiros de ordenação da fila
   struct clinica *Prox;
   struct clinica *Ant;
} fila;

fila * filaCriar()
{
 // Criar uma fila
}

int filaDestruir(fila ** f)
{
   // código de limpeza de toda memória usada da fila
}

int filaTamanho(fila * f, int * size)
{
   // calcular o numero de elementos da fila
   // vais guardar o tamanho o ponteiro "size"
}

int filaPush(fila * f, registo reg)
{
   // codigo de inserir o elemento da lista
}

int filePop(fila * f, registo * reg)
{
   // codigo de retirar o elemento da lista
   // guardando-o no ponteiro "reg"
}

int filaEsvaziar(fila * f)
{
   // codigo que elimina todos os elementos guardados na fila
}

int main()
{
   fila * f = filaCriar();

   // podes chamar as funcoes de manuseamento da fila aqui

   filaDestruir(&f);
   return 0;
}

bom código


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Baderous

Queria só fazer um reparo na ajuda do HHH, que é a questão das operações nas queues não se chamarem push e pop (associadas à estrutura stack) mas sim enqueue e dequeue.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.