Hello, I'm having an error in the function that prints a linked list.
I think the error is in the form's function prints, but I may also be saving the address of prox
wrongly.
Follow the code:
/*
* File: main.c
* Author: pmargreff
*
* Created on 1 de Dezembro de 2014, 20:17
*/
/*
* cria um struct que contém um nodo do tipo inteiro
* e um ponteiro para uma celula do tipo do próprio struct
*/
struct cel {
int nodo;
struct cel *prox;
};
typedef struct cel celula;
#include <stdio.h>
#include <stdlib.h>
celula *cria(void); //por que a função é um ponteiro ?
void insere(int x, celula *pont);
void imprime(celula *inicio);
/*
*
*/
int main(int argc, char** argv) {
int i;
celula *inicio;
inicio = cria();
for (i = 0; i < 10; i++) {
insere(i, inicio);
}
imprime(inicio);
return (EXIT_SUCCESS);
}
/*
* cria uma função que recebe uma célula apontando para o ínicio
* e que aloca espaço para um tipo célula e passa a ser apontada pela
* célula inicio
*/
celula *cria(void) {
celula *primeira;
primeira = malloc(sizeof (struct cel));
primeira->prox = NULL;
return primeira; //perguntar para o andŕe o que isso significa
}
/*
* cria uma nova váriavel do tipo célula chamada de "nova"
* aloca espaço para ela, insere o valor no campo do seu conteúdo
* o ponteiro da célula (ou seja) prox, recebe o valor que o ponteiro
* da célula anterior a ela tinha, o ponteiro da primeira aponta para
* nova
*/
void insere(int x, celula *head) {
celula *nova;
nova = malloc(sizeof (struct cel));
nova -> nodo = x;
nova -> prox = head -> prox;
head -> prox = head;
}
void imprime(celula *inicio){
celula *pont;
for (pont = inicio -> prox; pont != NULL; pont = pont->prox)
printf (" %d\n", pont->nodo);
}
After a few more attempts, I have a new function used for insertion.
void *insere(int x, celula *head) {
celula *nova;
nova = malloc(sizeof (struct cel));
nova -> nodo = x;
nova -> prox = head -> prox;
head -> prox = nova;
}