Cleber Griff Postado Novembro 14, 2012 Denunciar Share Postado Novembro 14, 2012 (editado) Tenho esse código e, como podem ver, as variáveis Lista *inicio e Lista *fim estão globais, como eu passo elas para local?#include<stdio.h> #include<stdlib.h> typedef struct lista{ int info; struct lista *prox; }Lista; Lista *inicio=NULL, *fim=NULL; int inserir_lista(int elem, int pos){ Lista *no; no = (Lista*) malloc (sizeof(Lista)); if(no==NULL) return 0; else{ no->info=elem; if(inicio==NULL){ inicio=no; fim=no; no->prox=NULL; return 1; } else{ if(pos==1){ no->prox=inicio; inicio=no; return 1; } else if(pos==2){ fim->prox=no; no->prox=NULL; fim=no; return 1; } else{ int achou=0; int item; Lista *aux=inicio; printf("Inserir apos qual elemento?\n"); scanf("%d", &item); while(aux!=NULL){ if(aux->info==item){ no->prox=aux->prox; aux->prox=no; achou=1; if(aux==fim){ fim=no; break; } } aux=aux->prox; } return achou; } } } } void imprimir_lista(){ Lista *aux; aux = (Lista*) malloc (sizeof(Lista)); aux = inicio; while(aux!=NULL){ printf("\n%d", aux->info); aux=aux->prox; } } void ordenada(){ Lista *aux, *proxima; int ordenada=0; aux = (Lista*) malloc (sizeof(Lista)); proxima = (Lista*) malloc (sizeof(Lista)); aux = inicio; if(aux==NULL){ printf("\n\nLista vazia\n\n"); } else if(aux->prox==NULL){ printf("\n\nLista contem apenas 1 elemento\n\n"); } else{ proxima=aux->prox; if(aux->info < proxima->info){ while(proxima!=NULL){ if(aux->info < proxima->info){ ordenada=1; aux=aux->prox; proxima=proxima->prox; } else{ ordenada=0; break; } } } else{ aux=inicio; proxima=aux->prox; while(proxima!=NULL){ if(aux->info > proxima->info){ ordenada=1; aux=aux->prox; proxima=proxima->prox; } else{ ordenada=0; break; } } } if(ordenada) printf("\n\nLista ordenada\n\n"); else printf("\n\nLista não-ordenada\n\n"); } } int main(){ int elem, pos, opcao; do{ printf("\n\nEscolha opcao: \n1- Inserir na lista\n2- Verificar - Ordenada\n3- Exibir lista\n4- Copiar lista\n5- Sair\n>>>> "); scanf("%d", &opcao); if(opcao==1){ printf("\nInforme o elemento:\n"); scanf("%d", &elem); printf("Aonde deseja inserir?\n1- Inicio\n2- Fim\n3- Apos determinado numero\n"); scanf("%d", &pos); if (inserir_lista(elem, pos)) printf("\nElemento inserido com sucesso"); else printf("Erro"); } if(opcao==2) ordenada(); if(opcao==3) imprimir_lista(); }while(opcao!=5); } Editado Novembro 14, 2012 por Cleber Griff Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dan Oliveira Postado Novembro 15, 2012 Denunciar Share Postado Novembro 15, 2012 declara dentro de main() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cleber Griff Postado Novembro 16, 2012 Autor Denunciar Share Postado Novembro 16, 2012 Então, Dan.. eu não to conseguindo fazer isso da maneira correta. Ele não salva os valores no ponteiro de main.Mas, de qualquer jeito, já arrumei outra forma de fazer, obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Cleber Griff
Tenho esse código e, como podem ver, as variáveis Lista *inicio e Lista *fim estão globais, como eu passo elas para local?
Editado por Cleber GriffLink 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.