Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida


Guest - Marcos -

Pergunta

Guest - Marcos -

Gostaria de saber como uqe eu faço um algoritimo que quando o usuario digitar algo já va diretamente para uma estrutura lista, para quando eu imprimir sair tudo ao contrario.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

oba fiaum... olha por sorte eu estava implementando só que não é uma lista e sim uma fila...

mais o conceito é bem parecido.

a diferença é que fila você inseri no final e retira do começo...

já lista geralmente insere no final e retira do final mesmo...

bom eu fiz isso pra estudar para uma prova de ED.

bom...a minha estrutura é dinamica...

abaixo segue o código de uma estrutura de lista em C.


#include<stdio.h>
#include<conio.h>
#include<malloc.h>

typedef struct no{
        int dado;
        struct no *prox;
        } *def_fila;

void inicializa(def_fila *fila){
     (*fila) = NULL;
}

int vazia (def_fila *fila){
    return ((*fila) == NULL);
}

int aloca(def_fila *fila, int d){
    def_fila que = (def_fila) malloc(sizeof(struct no));
    def_fila f;
    if (que != NULL){
          que->dado = d;
          que->prox = NULL;
          if (!vazia(fila)){
             f = (*fila);
             while (f->prox != NULL)
                   f = f->prox;
             f->prox = que;
          } else {
            (*fila) = que;
          }
          return 1;
    } else {
           return 0;
    }
}

int destroi (def_fila *fila, int *d){
    def_fila que = (*fila);
    if (!vazia(fila)){
       (*d) = que->dado;
       (*fila) = que->prox;
       free(que);
       return 1;
    } else {
           return 0;
    }
}

void menu (char *op){
     system ("CLS");
     printf("\nESCOLHA A OPCAO DA FILA ______");
     printf("\n1 - inserir");
     printf("\n2 - remover");
     printf("\n3 - encerrar");
     printf("\n\nOPCAO ~>");
     (*op) = getche();
}


int main(){
    def_fila fil;
    int dado;
    char opcao = '1';
    inicializa(&fil);
    while (opcao != '3'){
          menu(&opcao);
          switch(opcao){
                        case '1' :
                                 system ("CLS");
                                 printf("\nINSERINDO : digite um numero para inserir : ");
                                 scanf("%d",&dado);
                                 if (aloca(&fil,dado))
                                    printf("\n\ndado inserido com sucesso...");
                                 else
                                     printf("\n\nmemoria esgotada...");
                                 getch();
                         break;
                         case '2' :
                                  system ("CLS");
                                  if (destroi(&fil,&dado))
                                     printf("\nO dado %d foi excluido da fila...",dado);
                                  else
                                      printf("\nFILA VAZIA _______ unesp bauru ____");
                                  getch();
                          break; 
                          case '3' :
                                   system ("CLS");
                                   printf("\n\n\tPROGRAMA ENCERRADO");
                                   printf("\n\tUNESP - CAMPUS DE BAURU");
                          break;
          }
    }          
    getch();
    return 0;
}

qualquer duvida estarei por aí...

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

não entendi a parte que usa o "que"

int aloca(def_fila *fila, int d){

def_fila que = (def_fila) malloc(sizeof(struct no));

def_fila f;

if (que != NULL){

que->dado = d;

que->prox = NULL;

if (!vazia(fila)){

f = (*fila);

while (f->prox != NULL)

f = f->prox;

f->prox = que;

} else {

(*fila) = que;

}

return 1;

} else {

return 0;

}

Link para o comentário
Compartilhar em outros sites

  • 0

fera na verdade esse que era pra ser que é que na hora de postar o forum alteirou sozinho... mais isso não muda em nada... mais vamos la...

quando eu faço

def_fila que = (def_fila) malloc(sizeof(struct no));

eu estou alocando um espaço de memoria onde "suporte" uma estrutura do tipo "no"

ai é como se fosse um auxiliar... então eu reservo um espaço de memoria alocando ela... depois disso eu faço as movimentações necessaria...

ou seja fazendo com que o "que" seja apontado pelo ultimo elemento da lista ...

por isso fiz "def_fila f;"

que no caso seria uma estrutura auxiliar onde eu utilizo "f"

para percorrer a fila inteira até chegar em seu ultimo elemento ou seja f->prox == NULL

para então colocar o valor "que" la...

basicamente isso!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...