luizhk Posted October 24, 2011 Report Share Posted October 24, 2011 Estou com um problema para passar um estrutura criada no bloco principal para outras funções do programa. Quote Link to comment Share on other sites More sharing options...
0 mJi Posted October 25, 2011 Report Share Posted October 25, 2011 E qual é este problema?Especifica melhor, e de preferência, poste seu código. Quote Link to comment Share on other sites More sharing options...
0 luizhk Posted October 26, 2011 Author Report Share Posted October 26, 2011 então, tenho que ler passar cada caso do switch para procediementos e ler os dados, acrescentar na pilha./******************************************************************************** Implementação de Lista dinâmica encadeada não ordenada ** Opções: 1 - Inserir no inicio ** 2 - Inserir no final ** 3 - Consultar toda lista ** 4 - Remover da Lista ** 5 - esvaziar a lista ** 6 - sai do programa ********************************************************************************/#include<stdio.h>#include<stdlib.h>#include<conio.h>main(){ //definindo o registro que representará a lista struct LISTA { int num; struct LISTA *prox; }; // criação do ponteiro para lista //a lista está vazia, logo o ponteiro inicio tem valor NULL //o ponteiro inicio conterá o endereço do primeiro elemento da lista struct LISTA *inicio = NULL; //o ponteiro fim conterá o endereço do último elemento da lista struct LISTA *fim = NULL; //o ponteiro aux é um ponteiro auxiliar struct LISTA *aux; //o ponteiro anterior é um ponteiro auxiliar struct LISTA *anterior; //menu de opções int op, numero, achou; do { printf("\n========================================================================\n"); printf(" Insercao e remocao de numeros em uma Lista Encadeada (não ordenada) \n"); printf("========================================================================\n"); printf("\n 1 - Inserir no inicio"); printf("\n 2 - Inserir no final"); printf("\n 3 - Consultar toda lista"); printf("\n 4 - Remover da Lista"); printf("\n 5 - Esvaziar a lista"); printf("\n 6 - Sair"); printf("\n\n Escolha a operacao: "); scanf("%d",&op); switch(op) { case 1: { struct LISTA *novo; novo = (struct LISTA*) malloc(sizeof(struct LISTA)); printf("\nDigite um numero a ser inserido"); scanf("%d", &novo->num); //testa se foi alocado espaço if (novo == NULL) { exit(0); } else { if (inicio == NULL) { //a lista está vazia e o elemento inserido será o primeiro e o último inicio = novo; fim = novo; fim->prox = NULL; } else { // a lista já contem elementos e o novo elemento será inserido no inicio da lista novo->prox = inicio; inicio = novo; } printf("\nNumero inserido no inicio da lista"); } break; } case 2: { struct LISTA *novo; novo = (struct LISTA*) malloc(sizeof(struct LISTA)); printf("\nDigite um numero a ser inserido"); scanf("%d", &novo->num); //testa se foi alocado espaço if (novo == NULL) { exit(0); } else { if (inicio == NULL) { // a lista estava vazia e o elemento inserido será o primeiro e o último inicio = novo; fim = novo; fim->prox = NULL; } else { // a lista já contem elementos e o novo elemento será inserido no fim da lista fim->prox = novo; fim = novo; fim->prox = NULL; } printf("\nNumero inserido no fim da lista"); } break; } case 3: { if (inicio == NULL) { // a lista está vazia printf("\nLista vazia"); } else { //a lista contém elementos e estes serão mostrados do inicio ao fim printf("\nConsultando toda a lista"); aux = inicio; while(aux != NULL) { printf("\nnum = %d",aux->num); aux = aux->prox; } } break; } case 4: { if (inicio == NULL) { // a lista está vazia printf("\nLista vazia"); } else { //a lista contém elementos e o elemento a ser removido será digitado printf("\nDigite um numero a ser removido"); scanf("%d", &numero); //todas as ocorrencias da lista, iguais ao número digitado, serão removidas aux = inicio; anterior = NULL; achou = 0; while(aux != NULL) { //o numero digitado foi encontrado na lista e será removido if(aux->num == numero) { achou++; if(aux == inicio) { //o numero a ser removido é o primeiro da lista inicio = aux->prox; free(aux); aux = inicio; } else if (aux ==fim) { //o numero a ser removido é o último da lista anterior->prox = NULL; fim = anterior; free(aux); aux = NULL; } else { //o numero a ser removido está no meio da lista anterior-> prox = aux->prox; free(aux); aux = anterior->prox; } } else { anterior = aux; aux = aux->prox; } } if(achou == 0) printf("\nNumero não encontrado"); else if (achou == 1) printf("\nNumero removido 1 vez"); else printf("\nNumero removido %d vezes",achou); } break; } case 5: { if (inicio == NULL) { // a lista está vazia printf("\nLista vazia"); } else { // a lista será esvaziada aux = inicio; while(aux != NULL) { inicio = inicio->prox; free(aux); aux = inicio; } printf("\nLista esvaziada"); } break; } } }while(op != 6); getch();} Quote Link to comment Share on other sites More sharing options...
Question
luizhk
Estou com um problema para passar um estrutura criada no bloco principal para outras funções do programa.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.