Non riesco a visualizzare tale lista doppiamente concatenata in quanto dopo l'inserimento del terzo numero ritorna un errore di segmentazione..
#include <stdio.h>
#include <stdlib.h>
typedef struct BL {
int info;
struct BL *prev, *next; } nodo;
typedef nodo* nodoptr;
typedef struct { nodoptr top,tail; } bilista;
void init(bilista*);
void inserimento(bilista*);
void stampa(bilista*);
void push(bilista*,int);
main()
{
bilista A;
init(&A);
inserimento(&A);
stampa(&A);
return 0;
}
void init(bilista* A)
{
A->top=A->tail=NULL;
return;
}
void inserimento(bilista* A)
{
int n;
printf("\n INSERIRE I NUMERI DESIDERATI (n.b: immetti 0 per uscire):\n\n ");
scanf (" %d ",&n);
if (n)
{
nodoptr app;
app=(nodoptr)malloc(sizeof(nodo));
app->info=n;
app->prev=NULL;
app->next=NULL;
A->top=A->tail=app;
}
else A = NULL;
while(n)
{
scanf(" %d ",&n);
if(n) push(A,n);
}
return;
}
void push(bilista* A, int n)
{
nodoptr app;
app->info=n;
app->next=NULL;
app->prev=A->tail;
A->tail->next=app;
A->tail=app;
return;
}
void stampa(bilista *A)
{
nodoptr app;
app=(nodoptr)malloc(sizeof(nodo));
app=A->top;
while (app)
{
printf("%d",app->info);
app=app->next;
}
return;
}
|