luizhk Postado Outubro 24, 2011 Denunciar Share Postado Outubro 24, 2011 Estou com um problema para passar um estrutura criada no bloco principal para outras funções do programa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Outubro 25, 2011 Denunciar Share Postado Outubro 25, 2011 E qual é este problema?Especifica melhor, e de preferência, poste seu código. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 luizhk Postado Outubro 26, 2011 Autor Denunciar Share Postado Outubro 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();} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
luizhk
Estou com um problema para passar um estrutura criada no bloco principal para outras funções do programa.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.