Leob 0 Denunciar post Postado Setembro 17, 2009 Estou iniciando a programação em C na faculdade e estou aprendendo filas e pilhas e meu professor não é dos melhores então estou com muitas duvidas, baseado em um modelo que achei na net eu criei esses 2 programas que devem ler 5 numeros e depois exibi los, agora vem as duvidas : Neste programa eu só consigo imprimir na tela o primeiro valor da pilha o que eu fiz de errado ? Este é o conceito certo de pilha ? Eu não deveria usar push e pop ? Pilha #include <stdio.h> main() { typedef struct no {int num; struct no *proximo; }tipoNo; tipoNo *topo, *novo, *atual; int a; int i; /* inclui primeiro registro na pilha */ for (i=1;i<6;i++){ printf("digite um numero: "); scanf("%d",&a); novo = malloc(sizeof(tipoNo)); novo->num = a; novo->proximo = NULL; topo = novo; } /* exibe os registros da pilha */ atual = topo; while (atual != NULL){ printf("\n numero = %d ",atual->num); atual=atual->proximo; } getch(); } Fila Esse código aparetemente funcionou mas se vocês pudessem dar uma olhada pra ver se está certo. A mesma duvida do outro exemplo é o conceito certo de fila e eu não precisaria usar insert e remove ? #include "stdio.h" #include <stdlib.h> main() { typedef struct no {int num;/* campo para os dados */ struct no *proximo;/* ponteiro para a proxima celula */ }tipoNo; /* nome do novo tipo de estrutura */ tipoNo *inicio, *novo, *atual; int i; int a; inicio = atual = NULL; for (i=1;i<6;i++) { novo = malloc(sizeof(tipoNo)); printf("digite um numero: "); scanf("%d",&a); novo->num = a; novo->proximo=NULL; if (inicio == NULL) inicio = novo; else atual->proximo = novo; atual = novo; } /* exibe a lista */ atual = inicio; while (atual != NULL) { printf("\n numero = %d ",atual->num); atual=atual->proximo; } getch(); } Desculpem colocar uma duvida tão iniciante aqui, mas é que eu tenho um professor muito ruim e eu já pesquisei bastante material se vocês pudessem dar uma olhada e dar sugestões de como mudar o código ou de material de apoio ficaria muito agradecido. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 17, 2009 pesquisou bastante material mesmo? Estranho... pq existe MUITA coisa a cerca do assunto! Tentou buscar em ingles? "Stacks in C" e "Linked List in C"?? Mas tudo bem... Vamos começar pelo começo. O mais importante é você saber o conceito. Você deve criar as listas e pilhas de uma forma genérica. Não declare tudo na função main(). o código pode seguir essa estrutura: //declarações: struct Pilha_t { int valor; struct Pilha_t *prox; }; void Push(struct Pilha_t *pilha, int novoValor); int Pop(struct Pilha_t *pilha); int main() { //... } //agora escreva as funções... Compartilhar este post Link para o post Compartilhar em outros sites
Leob 0 Denunciar post Postado Setembro 17, 2009 Eu pesquisei mas está bem dificil de entender isso foi oq eu consegui fazer, como eu disse estou aprendendo a 2 semanas meu professor é muito fraco então fico perdido, tudo que entendi é que fila usa remove e insert e pilha usa push e pop então não sabia direito como procurar. então eu não faço do jeito que está no codigo ? ou eu faço do jeito que você falou e depois coloco as funções que eu criei ? ou as funções que eu criei não tem nada haver ? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 18, 2009 Como eu disse, o conceito é o mais importante. Pilha --> É um caontainer de dados do tipo FILO (First In Last Out), isto é, o primeiro item que entra na pilha, é o último a sair. Funciona como uma pilha de livros. -------------- | Matematica | -------------- | Portugues | -------------- | História | -------------- | Programação| -------------- Para pegar o livro de programação, terá que retirar os outros livros, um de cada vez. Fila --> É um container do tipo FIFO (First In First Out) e funciona exatamente como uma fila de banco. Aqueles que chegam lá primeiro, são atendidos primeiro, e sempre que chega alguém novo vai para o fim da fila. Eu encontrei MUITA coisa no google... Os primeiros três sites para query "Stacks in C" http://www.friedspace.com/cprogramming/stacks.php http://www.tutorialized.com/tutorial/Lesson-18-Pointers-and-Stacks-in-C/11926 http://www.cs.bu.edu/teaching/c/stack/linked-list/ Compartilhar este post Link para o post Compartilhar em outros sites