Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoa, tudo bem?
Cá estou eu com outra dúvida.
Nesse código, tenho duas estruturas: uma lista que armazena números e outra lista que aramazena palavras e tem a lista citada anteriormente.
typedef struct ListLine{
int value;
struct ListLine *next;
} ll;
typedef struct ListWord{
char* oWord;
char* mWord;
struct ListWord *nextWord;
struct ListLine *lines;
} lw;
Acredito que na declaração da estrutura esteja correto.
Agora, segue a função para acrescentar um valor na lista de um determinado nó:
void insertLine(lw* node, int where){
ll *new=(ll*)malloc(sizeof(ll));
if (new==NULL){
puts("Erro de memoria"); exit(1);
}
new->value=where;
new->next=NULL;
if (node->lines==NULL) node->lines=new;
else{
ll* aux=node->lines;
while (aux->next!=NULL) aux=aux->next;
aux->next=new;
}
}
Meu problema é o seguinte: quando quero adicionar um determinado valor na primeira célula da lista, ele acaba adicionando o valor também os pŕoximos nós. Agora, para adicionar em alguma célula que não seja a primeira ele não adiciona.
Achei que o problema fossem dois:
1. é necessário criar uma lista do tipo ListLines separadamente? Exemplo:
lw* listaWord = NULL;
ll* listaLines = NULL;
2. é necessário alocar dentro do novo nó a lista? Por via das dúvidas, coloquei na função que aloca um novo nó para listaWord:
new->lines = NULL;
Mesmo eu fazendo essas duas coisas, não funcionou. Acreditei que fosse a função de procurar o nó onde quero alterar a lista. A função busca na lista fiz da seguinte forma:
lw searchWordList (char palavra){
lw*n;
for (n=listaWord;n;n=n->nextWord)
if (strcmp(n->mWord,palavra)==0)
return n;
return NULL;
}
Bom, ainda não continua funcionando. Aguardo respostas.
Carregando comentários...