Ir para o conteúdo
PuPax

Lista ligada por Referência

Mensagens Recomendadas

PuPax    0
PuPax

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrosorio    5
pedrosorio
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?

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade