estou implementando uma Lista Circular Dinâmica (com lista ligada). As minhas funções de inicializar a fila e enfileirar (enque) estão Ok. O problema é quando eu fiz uma funçãoteste, que possui o objetivo de mudar o endereço da Lista.
Acontece que ele não muda. Alguém consegue me dizer o porque?
typedef struct reg{
int content;
struct reg *next;
}cell;
cell* init_queue(int y){
cell* NEW;
NEW = malloc(sizeof(cell));
NEW->content = y;
NEW->next = NEW;
return NEW;
}
int empty_queue(cell* p){
return(p == NULL);
}
int enque(cell* p, int y){
cell* NEW = malloc(sizeof(cell));
NEW -> content = y;
if(p == NULL){
p = NEW;
NEW->next = NEW;
return 1;
}
NEW->next = p;
cell* ULT;
ULT = p;
while(ULT->next != p){
ULT = ULT->next;
}
p = NEW;
ULT->next = p;
return 1;
}
void teste(cell* p){
p = p->next;
printf("P CONTENT = %d\n", p->content);
}
int main () {
cell* lista;
lista = init_queue(10);
enque(lista, 20);
printf("1 = %d\n", lista->content);
teste(lista);
printf("1 = %d\n", lista->content);
}
As outputs do programa são:
1 = 10
P CONTENT = 20
1 = 10
No meu entendimento, o segundo printf deveria dar os 20!!
Pergunta
renan_j
Pessoal,
estou implementando uma Lista Circular Dinâmica (com lista ligada). As minhas funções de inicializar a fila e enfileirar (enque) estão Ok. O problema é quando eu fiz uma função teste, que possui o objetivo de mudar o endereço da Lista.
typedef struct reg{ int content; struct reg *next; }cell; cell* init_queue(int y){ cell* NEW; NEW = malloc(sizeof(cell)); NEW->content = y; NEW->next = NEW; return NEW; } int empty_queue(cell* p){ return(p == NULL); } int enque(cell* p, int y){ cell* NEW = malloc(sizeof(cell)); NEW -> content = y; if(p == NULL){ p = NEW; NEW->next = NEW; return 1; } NEW->next = p; cell* ULT; ULT = p; while(ULT->next != p){ ULT = ULT->next; } p = NEW; ULT->next = p; return 1; } void teste(cell* p){ p = p->next; printf("P CONTENT = %d\n", p->content); } int main () { cell* lista; lista = init_queue(10); enque(lista, 20); printf("1 = %d\n", lista->content); teste(lista); printf("1 = %d\n", lista->content); }
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.