Jump to content
Fórum Script Brasil

Search the Community

Showing results for tags 'listas simplesmente encadeadas'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 1 result

  1. EDIT: RESOLVIDO! Achei uma forma rápida e fácil, quem precisar só mandar pm. Oi! Sou novo no fórum, e já venho pedindo ajuda =P Mas é o seguinte, tenho que entregar esse exercício até quinta, e por me enrolar estudando cálculo, GA e física, acabei deixando pra última hora esse exercício! D: Esse é o cabeçalho do exercício: Escrever um programa para gerenciar passagens reservadas: O programa deve mostrar um menu com 4 opções, 1 - Reservar Passagem 2 - Cancelar Passagem 3 - Verificar Passagem Reservada 4 - Mostrar Passageiros A informação deve ser armazenada em uma lista, com nomes em ordem alfabética. Cada passageiro pode reservar apenas uma vez. O programa deve ser em C. Deve ser feito utilizando Listas Simplesmente Encadeadas. Estou utilizando o CodeBlocks. Como base, tenho o seguinte código: #include <stdio.h> #include <stdlib.h> typedef struct elemento{ int dado; struct elemento *proximo; } Elemento; typedef struct listasimples{ Elemento *inicio; int tamanho; } ListaSimples; ListaSimples *inicializaLista() { ListaSimples *l; l = (ListaSimples *)malloc(sizeof(ListaSimples)); l->inicio = NULL; l->tamanho = 0; return l; } void colocaDado(int d, ListaSimples *l, int pos){ Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *novoDado; novoDado = (Elemento *)malloc(sizeof(Elemento)); novoDado->dado = d; int i = 0; while(andarilho != NULL && i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } if (anterior == NULL){ novoDado->proximo = l->inicio; l->inicio = novoDado; } else{ anterior->proximo = novoDado; novoDado->proximo = andarilho; } l->tamanho++; } int retiraDado(ListaSimples *l,int pos) { if (l->inicio == NULL){ printf("A lista esta vazia, não há o que retirar! \n"); return 0; } else { Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *retirado; retirado = (Elemento *)malloc(sizeof(Elemento)); int i = 0; while(i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } retirado = andarilho; int saida = retirado->dado; if (anterior == NULL) { l->inicio = andarilho->proximo; } else{ anterior->proximo = andarilho->proximo; } free(retirado); return saida; } } void imprimeListaSimples(ListaSimples *l) { Elemento *iterador; iterador = l->inicio; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { printf("%i",iterador->dado); iterador = iterador->proximo; } } printf("\n"); } void limpaListaSimples(ListaSimples *l) { Elemento *iterador, *anterior; iterador = l->inicio; anterior = NULL; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { anterior = iterador; iterador = iterador->proximo; free(anterior); } } l->inicio = NULL; } int main(void) { ListaSimples *l = inicializaLista(); colocaDado(1,l,0); imprimeListaSimples(l); colocaDado(2,l,1); imprimeListaSimples(l); colocaDado(3,l,1); imprimeListaSimples(l); colocaDado(4,l,2); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); colocaDado(5,l,0); imprimeListaSimples(l); colocaDado(6,l,0); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); retiraDado(l,2); imprimeListaSimples(l); retiraDado(l,1); imprimeListaSimples(l); retiraDado(l,0); imprimeListaSimples(l); retiraDado(l,0); return 0; } e meu código está atualmente assim: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> typedef struct elemento{ char nome[20]; int dado; struct elemento *proximo; } Elemento; typedef struct listasimples{ Elemento *inicio; int tamanho; } ListaSimples; ListaSimples *inicializaLista() { ListaSimples *l; l = (ListaSimples *)malloc(sizeof(ListaSimples)); l->inicio = NULL; l->tamanho = 0; return l; } void colocaDado(char d, ListaSimples *l, int pos){ Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *novoDado; novoDado = (Elemento *)malloc(sizeof(Elemento)); novoDado->nome[20] = d; int i = 0; while(andarilho != NULL && i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } if (anterior == NULL){ novoDado->proximo = l->inicio; l->inicio = novoDado; } else{ anterior->proximo = novoDado; novoDado->proximo = andarilho; } l->tamanho++; } int retiraDado(ListaSimples *l,int pos) { if (l->inicio == NULL){ printf("A lista esta vazia, não há o que retirar! \n"); return 0; } else { Elemento *andarilho = l->inicio; Elemento *anterior = NULL; Elemento *retirado; retirado = (Elemento *)malloc(sizeof(Elemento)); int i = 0; while(i < pos) { anterior = andarilho; andarilho = andarilho->proximo; i++; } retirado = andarilho; int saida = retirado->dado; if (anterior == NULL) { l->inicio = andarilho->proximo; } else{ anterior->proximo = andarilho->proximo; } free(retirado); return saida; } } void imprimeListaSimples(ListaSimples *l) { Elemento *iterador; iterador = l->inicio; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { //printf("%s",iterador->nome); puts(iterador->nome); iterador = iterador->proximo; } } printf("\n"); } void limpaListaSimples(ListaSimples *l) { Elemento *iterador, *anterior; iterador = l->inicio; anterior = NULL; if (iterador == NULL) { printf("Lista vazia!"); } else{ while (iterador != NULL) { anterior = iterador; iterador = iterador->proximo; free(anterior); } } l->inicio = NULL; } int main(void) { ListaSimples *l = inicializaLista(); int escolha=0; char name[20]; printf("Reservator v0.1\n"); printf("1 - Reservar Passagem\n2 - Cancelar Passagem\n3 - Verificar Passagem Reservada\n4 - Mostrar Passageiros\n"); while(escolha<1 || escolha>4) { scanf("%d",&escolha); } gets(name); colocaDado(name,l,0); imprimeListaSimples(l); colocaDado("ass",l,1); imprimeListaSimples(l); retiraDado(l,0); return 0; } Eu empaquei, e minhas dúvidas são as seguintes: 1) Como eu faço para enviar um nome, com espaços, para a lista??? 2) Como eu faço para a lista se organizar em ordem alfabética? (pensei em usar o strcmp, mas n sei como fazer isso junto da lista), 3) Como eu imprimo esses nomes da lista? Por favor, me ajudem :( To desesperado pois tenho prova de fisica na quinta, mesmo dia da entrega desse exercício que vale nota..
×
×
  • Create New...