Oppure

Loading
10/06/11 20:10
simone90
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;
}
aaa