Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C] Liste

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95

    [C] Liste

    Salve,

    Volevo sapere se questo codice puo' essere corretto o se puo' generare errore visto che compilando il codice con il compilatore lcc al ritorno mi genera un errore e la terminazione abnomala del programma. Lo scopo è inserire in coda in una lista, usando l'allocazione dinamica con malloc:

    queste sono le strutture:


    //struttura T2, lista doppia, indica il punto avente coordinate x,y
    //se è il primo punto di una linea è puntato da t3 tramite //puntatore definito p_punto T2

    typedef struct p_punto *p_punto;
    typedef struct p_punto{
    int x;
    int y;
    p_punto next;
    p_punto prev;
    }punto;

    //struttura T3, lista doppia,punta al punto di inizio di ogni tratta
    typedef struct T3_i *L_i;
    typedef struct T3_i{
    int peso; //peso di ogni tratto che compone la linea/tratta
    int x;
    int y; //coordinate iniziali (del primo punto della tratta)
    L_i next; //puntatore al sucessivo
    char *percorso; //stringa contenente gli spostamenti es:2N2W...
    p_punto T2;//puntatore alla struttura T2

    Ecco la funzione :


    L_i metti_inlista(int a, int b, int t);
    while(...){
    ttre=malloc(sizeof(L_i));
    ttre->x=a;
    ttre->y=b;
    ttre->peso=t;
    ttre->T2=NULL;
    ttre->percorso=(dim%2==0)?c_tmp2:c_tmp1;

    printf("il percorso e'' %s\n",ttre->percorso);
    //INSERISCO IN LISTA T3
    if(testaL_i==NULL){ //lista vuota
    printf("inserisco in testa\n");
    ttre->next=NULL;
    testaL_i=ttre;
    }
    else {//la lista non è vuota inserisco in coda


    while(tmp1->next!=NULL)tmp1=tmp1->next;//scorro la lista
    printf("tmp1:%s\n",tmp1->percorso);
    ttre->next=NULL;
    tmp1->next=ttre;
    printf("tmp1->next:%s\n",tmp1->next->percorso);
    if (ttre->next==NULL)printf("il succ al nuovo elemnto punta poi a null");
    }
    return ttre;//ritorna il puntatore al valore appena istanziato
    }

    Sarei grato se qualcuno mi risponde al più presto perkè è una parte di un progetto che devo consegnare tra breve..
    Non riesco proprio a capire perkè nn va.. :master:

    Grazie!!!

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Prova a sostituire nella funzione la riga:

    ttre=malloc(sizeof(L_i));

    con

    ttre=malloc(sizeof(struct T3_i));


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.