Ciao, l'esercizio è definire una lista di elementi che rappresentano punti sul piano cartesiano, quindi scrivere una funzione che legga due valori float e metta il punto con quelle coordinate in cima alla lista, infine scrivere una funzione che stampi la lista.
Il compilatore non mi dà errori, ma il programma non funziona (il terminale dice "Bus error: 10")
Cosa sbaglio?

Grazie

codice:
<stdio.h>
#include <stdlib.h>

typedef struct EL{
  float Ascissa;
  float Ordinata;
  struct EL  *next;} Punto;

void stampa(Punto lista){
  Punto current=lista;

  while(current.next !=NULL){
    printf("(%f,%f) ",current.Ascissa,current.Ordinata);
    current=*(current.next);
  }
}
void TOP(Punto lista, float A, float O){
  Punto *newstart;
  newstart=malloc(sizeof(Punto));
  (*newstart).Ascissa=A;
  (*newstart).Ordinata=O;
  *((*newstart).next)=lista;
  
  lista=*newstart;  
}

int main(){
  float A;
  float O;
  Punto start;
  
  while(1>0){
    scanf("%f",&A);
    scanf("%f",&O);
    TOP(start,A,O);
    stampa(start);
  }
  return 0;