1 / 7

Computação 2

Linguagem C “Pilhas e Filas com Alocação Dinâmica”. Computação 2. Slides: Prof. João Fabro UTFPR - Curitiba. O que são “Pilhas” e “Filas”. Pilhas  e Filas são estruturas de dados com alocação dinâmica: são Listas Encadeadas !

Download Presentation

Computação 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagem C“Pilhas e Filas com Alocação Dinâmica”. Computação 2 Slides: Prof. João Fabro UTFPR - Curitiba

  2. O que são “Pilhas” e “Filas” • Pilhas e Filas são estruturas de dados com alocação dinâmica: são Listas Encadeadas! • Ao implementar mecanismos de inserção e remoção de elementos da Lista Encadeada, pode-se definir se a Lista comporta-se como uma Fila ou uma Pilha!

  3. O que são “Pilhas” e “Filas” • Fila: A inserção ocorre na última posição, e a remoção ocorre na primeira posição - o primeiro a entrar na fila é também o primeiro a sair! • Pilha: Neste caso, tanto a inserção quanto a remoção de elementos ocorre sempre na primeira posição - o último a entrar na pilha é também o primeiro a sair! (Imagine de uma pilha de livros sobre a mesa, por exemplo!)

  4. O que são “Pilhas” e “Filas” • As duas estruturas de dados são implementadas com base na estrutura de Lista Encadeada apresentada na aula passada. • A seguir é apresentado um exemplo de uma Pilha.

  5. int main() { char escolha; primeiro = NULL; //Inicia a Pilha Vazia! for ( ; ; ) { escolha = menu (); switch ( escolha ) { case ‘i' : case ‘I' : { insere(); } break; case 'm' : case 'M' : { mostra_todos(); } break; case ‘r' : case ‘R' : { remove(); } break; case ‘t' : case ‘T' : { exit ( 0 ); } break; default : { printf ( "Opcao invalida. \n" ); } } printf ( "\n \n \n" ); } system ( "Pause" ); return 0; } #include <stdio.h> #include <stdlib.h> struct Elemento { char nome [100]; struct Elemento* prox; }; struct Elemento* primeiro;//Ponteiro para o “topo” // da Pilha char menu (); void insere (); void mostra_todos(); void remove ();

  6. void insere () { system ( "cls" ); printf ( "\n \n \n" ); struct Elemento* novo; novo = malloc ( 1 * sizeof (struct Elemento) ); novo->proximo = primeiro; printf ( “Digite oNome a inserir na Pilha: \n" ); fflush ( stdin ); gets ( novo->nome ); primeiro = novo; } void remove () { system ( "cls" ); printf ( "\n \n \n" ); struct Elemento *aux; if(primeiro != NULL) { aux = primeiro; // aux aponta para o primeiro! primeiro = primeiro ->proximo; //primeiro aponta //para o “segundo” printf(“ Nome removido da Pilha: %s\n”, aux->nome); free(aux); //Libera a área de memória onde o nome estava } else printf(“Pilha Vazia!!!\n”); }

  7. void mostra_todos () { system ( "cls" ); printf ( "\n \n \n" ); struct Elemento *aux; aux = primeiro; while ( aux != NULL ) { printf ("%s \n", aux->nome ); aux = aux->proximo; } } char menu () { printf ("\n \n \n"); char opcao; printf ( "(I)nserir novo nome na pilha. \n" ); printf ( "(M)ostrar todos . \n" ); printf ( "(R)emover um nome da pilha. \n" ); printf ( "(T)erminar. \n" ); fflush ( stdin ); scanf ( "%c", &opcao ); return opcao; }

More Related