Jump to content

Luísa Brandão

Members
  • Content count

    3
  • Joined

  • Last visited

Community Reputation

0 Comum

About Luísa Brandão

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Luísa Brandão

    Lista duplamente encadeada - c

    Olá, preciso de ajuda em um algoritmo. A pergunta é: implemente um programa com as opções de inserir, buscar, excluir e listar dados usando uma lista duplamente encadeada, com o tema Cidades visitadas pelo vendedor O algoritmo está praticamente pronto, mas toda vez que rodo, da problema com a opção “liberar lista”. Ele simplesmente não libera e imprime caracteres estranhos Alguém pode ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> struct lista2{ char cidades[51]; struct lista2* ant; struct lista2* prox; }; typedef struct lista2 Lista2; Lista2* lst2_cria (void){ return NULL; } Lista2* lst2_insere (Lista2* l, char v[] ){ Lista2* novo=(Lista2*)malloc(sizeof(Lista2)); strcpy(novo->cidades, v); novo->prox=l; novo->ant=NULL; if (l!=NULL) l->ant=novo; return novo; } Lista2* lst2_busca (Lista2*l, char v[]){ Lista2* p; for (p=l; p!=NULL; p=p->prox) if (strcmp (p->cidades,v)==0) return p; return NULL; } Lista2* lst2_retira (Lista2* l, char v[]){ Lista2* p; p= lst2_busca(l,v); if (p==NULL){ printf("Cidade nao encontada.\n"); return l; } else printf("Cidade retirada.\n"); if (l==p) l=p->prox; else p->ant->prox=p->prox; if (p->prox!=NULL) p->prox->ant=p->ant; free(p); return l; } int lst2_vazia(Lista2* l){ if (l==NULL)return 1; else return 0; } void lst2_imprime (Lista2* l){ Lista2*p=l; if(lst2_vazia(l)) printf("\n\nA lista esta vazia.\n\n"); else{ while(p->prox != NULL) p = p->prox; while(p != NULL){ printf("%s\n", p->cidades); p = p->ant; } } } void lst2_libera (Lista2* l){ Lista2* p=l; while (p!=NULL) { Lista2* t=p->prox; free(p); p=t; } } int main() { int n;char cidade[51]; Lista2* l; printf("\n\t\t>-------------------- MENU --------------------<\n\n"); printf("\n0)Encerrar\n1)Criar lista\n2)Inserir cidade\n3)Retirar cidade\n4)Imprimir lista\n5)Verificar se a lista esta vazia\n6)Liberar lista\n"); printf("\n\t\t>----------------------------------------------<\n"); while(1) { scanf("%d",&n); if(n==0)break; switch(n) { case 1: l=lst2_cria(); printf("Lista criada.\n"); break; case 2: printf("Digite a cidade que deseja inserir\n"); scanf(" %[^\n]s", cidade); l=lst2_insere(l, cidade); break; case 3: printf("Digite a cidade que deseja retirar\n"); scanf("%s", cidade); l=lst2_retira(l, cidade); break; case 4: lst2_imprime(l); break; case 5: if(lst2_vazia(l)) printf("A lista esta vazia.\n"); else printf("A lista nao esta vazia.\n"); break; case 6: lst2_libera(l); printf("Lista liberada\n"); break; default: printf("\nDigite uma das opções validas.\n"); break; } } return 0; }
  2. Luísa Brandão

    Ajuda em fila e pilha - linguagem c

    Não consegui a parte de retornar o resultado do numero de elementos da maior pilha e na questão 2, como fazer para trocar os elementos
  3. Luísa Brandão

    Ajuda em fila e pilha - linguagem c

    Olá, alguém poderia me ajudar nesses exercícios de fila e pilha? Agradeço desde já (:
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.