Angel*** 0 Denunciar post Postado Junho 9, 2008 Boa Noite, Preciso de uma ajuda com um trabalho, preciso implementar um algoritmo com: - Fila linear E - Fila circular Utilizando o controle de listas (ligadas , encadeadas) O Algoritmo deve solicitar a quantidade de valores armazenados. (controle de overflow) O programa deve permitir: incluir valores, remover e listar Na listagem deverá apresentar: - Valor armazenado - Endereço do nó atual - Endereço do próximo nó - Endereço Inicio da fila - Endereço Fim da fila --------------------% L-| E1 | E2 | E3 | ---endereço atual I-| 10 | 5 | 4 | ---valor N-| E2 | E3 | NULL | ---endereço do proximo E-|-----------------| A-| INICIO: E1 | R-| FIM: E3---------| --------------------% ----------------------% C-| E1 | E2 | E3 | E4 | ---endereço atual I- | 10 | 5 | 4 | 3 | ---valor R-| E2 | E3 | E4 | E1 | ---endereço do proximo C-|-------------------| U---------------------| | INICIO: E1 | L-| FIM: E3-----------| A---------------------| R---------------------% Se pouderem me ajudar, eu agradeço muito!!! Obrigada!! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 9, 2008 Qual é a dúvida? Compartilhar este post Link para o post Compartilhar em outros sites
Angel*** 0 Denunciar post Postado Junho 9, 2008 Qual é a dúvida? Oi, então, é um trabalho e estou meio perdida em implementar o algoritmo com filas + listas encadeadas, você pode me ajudar? não consigui nem começar ainda... se puder me add no msn! Obrigada!! Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Junho 9, 2008 Oi Angel, postei um tutorial sobre lista encadeada circular a pouco tempo aqui no fórum, acho que vai te ajudar um pouquinho! Compartilhar este post Link para o post Compartilhar em outros sites
Angel*** 0 Denunciar post Postado Junho 10, 2008 Oi Angel, postei um tutorial sobre lista encadeada circular a pouco tempo aqui no fórum, acho que vai te ajudar um pouquinho! Muito obrigada!!mas é q to precisando de uma ajudinha... olhe consegui montar uma parte do código mas ele mostra errado e não faz tudo o q preciso.. pode me ajudar?? Muito obrigada!!!! Segue código: #include <stdio.h> #include <stdlib.h> #include <conio.h> struct no { int info; struct no* prox; }; typedef struct no No; struct fila { No* ini; No* fim; }; typedef struct fila Fila; // funcoes Fila* cria (void); No* ins_fim (No* fim, int v); No* ret_ini (No* ini); void insere (Fila* f, int v); int retira (Fila* f); int vazia (Fila* f); void libera (Fila* f); void imprime (Fila* f); void imprime_end (Fila* f); void imprime_end_prox (Fila* f); int main (void) { Fila* f; f = cria(); int lim=0,tam=0,vlr,opc,menu=1; while (menu!=0) { clrscr(); printf("\n\t \t * * * Filas e Listas Encadeadas * * *\t \t \n"); printf("\n\t \t * Escolha uma opcao *\t \t \n"); printf("\n 1- Informe o tamanho para a lista: "); printf("\n 2- Insere um valor na lista"); printf("\n 3- Mostrar a lista"); printf("\n 4- Remover um valor da lista"); printf("\n 5- Para sair\n\n"); scanf("%d", &opc); switch (opc) { case 1: printf("tamanho :"); scanf ("%d", &tam); break; case 2: if ((!tam) || (tam==lim)) { printf("Primeiro tenha um tamanho valido e maior do q zero!!!"); getch(); } else { printf("informe o valor para inserir"); scanf ("%d", &vlr); insere (f, vlr); lim++; } break; case 3: printf("Configuracao da fila:\n"); imprime(f); imprime_end (f); imprime_end_prox (f); getch(); break; case 4: retira(f); lim--; break; case 5: libera(f); exit(1); break; }//Switch Case }// While return 0; }// main Fila* cria (void) { Fila* f = (Fila*) malloc(sizeof(Fila)); f->ini = f->fim = NULL; return f; } No* ins_fim (No* fim, int v) { No* p = (No*) malloc(sizeof(No)); p->info = v; p->prox = NULL; if (fim != NULL) fim->prox = p; return p; } No* ret_ini (No* ini) { No* p = ini->prox; free(ini); return p; } void insere (Fila* f, int v) { f->fim = ins_fim(f->fim,v); if (f->ini==NULL) f->ini = f->fim; } int retira (Fila* f) { int v; if (vazia(f)) { printf("Fila vazia.\n"); exit(1); } v = f->ini->info; f->ini = ret_ini(f->ini); if (f->ini == NULL) f->fim = NULL; return v; } int vazia (Fila* f) { return (f->ini==NULL); } void libera (Fila* f) { No* q = f->ini; while (q!=NULL) { No* t = q->prox; free(q); q = t; } free(f); } void imprime (Fila* f) { No* q; for (q=f->ini; q!=NULL; q=q->prox) printf("%d\n",(*q).info); } void imprime_end (Fila* f) { No* q; for (q=f->ini; q!=NULL; q=q->prox) printf("%d\n",&(*q).info); } void imprime_end_prox (Fila* f) { No* q; for (q=f->ini; q!=NULL; q=q->prox) printf("%d\n",(*q).prox); } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 10, 2008 oq seu codigo naum faz?? q erros q aparecem? []'s ---Título editado--- Ajuda - trabalho com lista encadeada, fila linear e c http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Trabalho com lista encadeada, fila linear e c Compartilhar este post Link para o post Compartilhar em outros sites
Angel*** 0 Denunciar post Postado Junho 10, 2008 Oi,então Não consigo mostrar : - Endereço do nó atual - Endereço do próximo nó - Endereço Inicio da fila - Endereço Fim da fila e tbm não exclui os valores quando solicitado... Obrigada! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Junho 11, 2008 Voce testou essa função? void imprime_end (Fila* f) { No* q; for (q=f->ini; q!=NULL; q=q->prox) printf("%d\n",&(*q).info); } Se sim, qual problema(s) voce encontrou? Faz tempo que não trabalho com C, mas pelo que lembro voce pode fazer isso: void imprime_end (Fila* f) { No* q; for (q=f->ini; q!=NULL; q=q->prox) printf("%d\n",q); } Esse seria os endereços dos registros que contém um inteiro e um ponteiro para uma outra estrutura dessas. Compartilhar este post Link para o post Compartilhar em outros sites
Angel*** 0 Denunciar post Postado Junho 11, 2008 Voce testou essa função? Se sim, qual problema(s) voce encontrou? Faz tempo que não trabalho com C, mas pelo que lembro voce pode fazer isso: Oi! Muito obrigada!! testei e funcionou, mas acabei fazendo de outra forma. mas funcionou e mostrou certinho! Muito Obrigada!!! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Junho 11, 2008 Foi nada. Se continuar com dúvidas volte a postar. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Oi! Muito obrigada!! testei e funcionou, mas acabei fazendo de outra forma. mas funcionou e mostrou certinho! Muito Obrigada!!! Compartilhar este post Link para o post Compartilhar em outros sites
Angel*** 0 Denunciar post Postado Junho 12, 2008 Foi nada. Se continuar com dúvidas volte a postar. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Com certeza!! Obrigada!!! :D Compartilhar este post Link para o post Compartilhar em outros sites