• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PuPax

Lista ligada por Referência

4 mensagens neste tópico

Boas tarde,

Tenho as seguintes funções implementadas para um lista duplamente ligada.

No mais é chamada esta função: read_from_file(head_sorted_list, path);

- head_sorted_list é a cabeça da lista;

- path é o caminho do ficheiro de texto;

Ao entrar nessa função é feita a chamada de outra função: insert_item(head, aux_id, aux_name, aux_price);

- head é a cabeça da lista;

- aux_id, aux_name e aux_price são os dados para preencher o nó;

E a função o que faz é inserir na lista os elementos lidos para lá:

void insert_item(list_item* head, int id, char* product_name, float price){
list_item *novo, *aux;

novo = (list_item*) malloc (sizeof(list_item));

if(novo == NULL) 
	return;

novo->id=id;
strcpy(novo->product_name,product_name);
novo->price=price;
novo->next = NULL;
novo->previous = NULL;


if(is_empty(head))
{
	novo->next = head;
	head = novo;
}
else if(head->id > novo->id)
{
	novo->next = head;
	head = novo;
	(novo->next)->previous = head;
}
else
{
	aux = head;
	while(aux->next != NULL && aux->next->id < novo->id)
		aux = aux->next;
	if(aux->next != NULL)
	{
		novo->next = aux->next;
		aux->next = novo;
		(novo->next)->previous = novo;
		novo->previous = aux;
	}
	else
	{
		aux->next = novo;
		novo->previous = aux;
	}
}
}

O meu problema é que os dados são perdidos da lista, uma vez que ele nunca são retornados. Como poderei fazer isto por referência ou assim é que não vejo outra maneira e o prototipo das funções nao podem ser alterados pois foram dadas pelo prof.

Cumprimentos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa o GeSHi para a próxima para colorires o código.

Sem mudares a assinatura da função isso é impossível. O que tu queres fazer pode ser feito por referência (como pediste) ou devolvendo o apontador para a cabeça da lista. Mas ambas as opções precisam de uma alteração à assinatura da função.

Mas acho muito estranho o prof dar-te código que não podes fazer nada de jeito com ele...

Qual é a definição do list_item?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
O meu problema é que os dados são perdidos da lista, uma vez que ele nunca são retornados.

Não consegui perceber o teu problema. São perdidos como?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois eu também acho que sem alterar os protótipos das funções não dava para fazer.

Alterei e assim ja funciona perfeitamente... :D

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora