Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - lista doppiamente concatenata
Forum - C/C++ - lista doppiamente concatenata

Avatar
simone90 (Normal User)
Newbie


Messaggi: 2
Iscritto: 14/05/2011

Segnala al moderatore
Postato alle 22:10
Venerdė, 10/06/2011
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;
}

PM Quote