1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida numa LISTA (LIFO) em C

Discussão em 'Programação' iniciada por MrVerissimo, 30 de Dezembro de 2006. (Respostas: 3; Visualizações: 944)

  1. MrVerissimo

    MrVerissimo Power Member

    Boas,

    Tenho de fazer um programa em que crio uma Lista dinamica LIFO. Para essa lista estou a utilizar uma estrutura que tem num dos campos um array de chars, para guardar uma string... A minha lista está a funcionar bem, cada vez que introduzo uma string, ela aloca espaco para uma nova estrutura de dados. Porem, o que queria fazer era: quando se introduzisse a mesma string, ela nao alocaria espaço, porque já haveria uma estrutura na lista com o mesmo nome. Como é que faço isso? crio uma funçao que percorra todos os elementos da lista antes de alocar memoria? ou posso fazer um ciclo dentro da funcao "insere_pilha" (funcao que vai aumentando a lista, por assim dizer)? Já agora, se possivel, gostaria que me dessem algumas dicas de como fazer isso...

    Espero ter-me feito entender,

    Cumps
     
  2. Creio que até já devias ter uma função com um nome do estilo "procura_pilha(<nome>,<pilha>);" que vai verificar se existe ou não a estrutura com o nome que tu pretendes.

    Seria algo do estilo:
    Código:
    pilha *procura_pilha(char nome, pilha *pilha) {
           pilha *tmp, *found;
           tmp = pilha;
    
           While (tmp != NULL) {
                  if (tmp->nome == nome) {
                         found = tmp;
                  }
                  tmp = tmp->next;
           }
           return found;
    }
    
    Creio que seja algo deste estilo.
     
  3. souto

    souto To fold or to FOLD?

    qual é o mal de inserires os mesmos dados outra vez ? :)
    todas as pilhas que conheço não procuram por valores duplicados. é objectivo da pilha armazenar dados, quer sejam repetidos ou não.

    podes dar é uma forma de o utilizador saber, antes de inserir, se já existe o valor em pilha.

    essa função já foi sugerida acima.

    cumprimentos.
     
  4. MrVerissimo

    MrVerissimo Power Member

    Eu tenho de introduzir duas strings de cada vez... e tenho que garantir que a primeira é diferente de todas as outras. por exemplo:

    "JOAO PEDRO", a pilha ficaria: JOAO -> PEDRO

    sendo que o utilizador nao poderia por nunca mais a primeira string outra vez na primeira posicao, se pusesse agora:

    "ANTONIO PEDRO". a pilha teria de ficar: JOAO -> PEDRO -> ANTONIO

    se introduzisse, a seguir:

    "MANUEL JOAO", a pilha ficaria JOAO -> PEDRO -> ANTONIO -> MANUEL


    Espero ter sido explicito...
    Cumps
     

Partilhar esta Página