Liste concatenate

di il
5 risposte

Liste concatenate

Sto provando da diverso tempo a concatenare le seguenti liste, ma senza successo qualcuno mi potrebbe dare qualche consiglio
  struct N{
		   int NO[2];
		   char NOME[6];
		   char LETTERA[1];
		   struct N*next;
	   }N3={{3,5},"azoto","N"};

struct C{
	       int NO[2];
	       char NOME[9];
	       char LETTERA[1];
	       struct C *next;
	   }N2={{2,4},"carbonio","C",&N3};
    
struct H{
		   int NO[2];
		   char NOME[11];
		   char LETTERA[1];
		   struct C *next;
	   }N1={{1,0},"idrogeno","H",&N2};
Riesco a scorrerci dentro, ma se cambio l'indice dell'array NO[] (esempio: imposto l'indice di NO di H a 1 e scrivo N1={1,"idrogeno","H",&N2} ) il programma smette di funzionare e non mi restituisce più NOME. C'è qualche modo per evitare ciò o un modo migliore per concatenare queste strutture?
Scorro nel programma col seguente codice:
 struct H *lista=&N1;
	 N3.next=0;
	 while(lista!=(struct N*)0){
		 printf("%s",lista->NOME);
		 lista=lista->next;

5 Risposte

  • Re: Liste concatenate

    Potresti postare il codice completo con cui concateni le liste? Questi sono spezzoni che dicono poco ...
  • Re: Liste concatenate

    Si certo
    #include <stdio.h>
    	   struct N{
    		   int NO[2];
    		   char NOME[6];
    		   char LETTERA[1];
    		   struct N*next;
    	   }N3={{3,5},"azoto","N"};
    struct C{
    	       int NO[2];
    	       char NOME[9];
    	       char LETTERA[1];
    	       struct C *next;
    	   }N2={{2,4},"carbonio","C",&N3};
        
    struct H{
    		   int NO[2];
    		   char NOME[11];
    		   char LETTERA[1];
    		   struct C *next;
    	   }N1={{1,0},"idrogeno","H",&N2};
    	   
    int main (void){
    	 struct H *lista=&N1;
    	 N3.next=0;
    	 while(lista!=(struct N*)0){
    		 printf("%s",lista->NOME);
    		 lista=lista->next;
    	 }
    	}
  • Re: Liste concatenate

    Inizierei nell'evitare di definire strutture ridondanti come struct C e struct H. Ti basta definire solo una volta la struttura N, e poi far sì che N3,N2,N1 siano tutti di tipo struct N.

    Per essere chiaro, usa un typedef e chiama la struttura Node:
     typedef struct N{
             int NO[2];
             char NOME[6];
             char LETTERA[1];
             Node* next;
          }Node;
  • Re: Liste concatenate

    Grazie mille CarDeFusco!!! ho appena risolto grazie a te.
  • Re: Liste concatenate

    denilNE555 ha scritto:


    Grazie mille CarDeFusco!!! ho appena risolto grazie a te.
    You are welcome!
Devi accedere o registrarti per scrivere nel forum
5 risposte