A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Computação 2 Slides: Prof. João Fabro UTFPR - Curitiba Linguagem C Pilhas e Filas com Alocação Dinâmica."— Transcrição da apresentação:

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

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 #include 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 (); 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; }

6 void insere () { system ( "cls" ); printf ( "\n \n \n" ); struct Elemento* novo; novo = malloc ( 1 * sizeof (struct Elemento) ); novo->proximo = primeiro; printf ( Digite o Nome 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 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; } 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; }


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

Apresentações semelhantes


Anúncios Google