Linguaggio C, struct e liste

di il
3 risposte

Linguaggio C, struct e liste


Si consideri un record Persona contenente i campi nome e cognome di tipo stringa (lunghezza massima 50 caratteri). Una filaSCL è una struttura collegata lineare i cui campi informativi sono elementi di tipo Persona. Il primo elemento della fila è detto capofila e rappresenta la prossima persona che sarà servita. Quando il capola è servito, esso viene rimosso dalla filla e la persona successiva diventa capola.
Quando una persona si aggiunge alla fila, viene inserita in ultima posizione. Tuttavia, una persona può essere raccomandata e, in tal caso, essere inserita in un punto arbitrario della fila.

Le seguenti denizioni forniscono i tipi necessari alla manipolazione di file:
struct elemSCL {

Persona elemento;
struct elemSCL * next;
};
typedef struct elemSCL nodoFilaSCL;
typedef nodoFilaSCL* filaSCL;


Ho difficoltà nell'inserimento dei dati, perché di solito era abituato a lavorare con una sola struttura mentre ora ne ho due..

Dunque,

Il dato strutturato persona l'ho definito così:
struct P{
	
	char nome[50];
	char cognome[50];
};

typedef struct P Persona;

struct elemSCL{
	
	Persona elemento;
	struct elemSCEL *next;
};

typedef struct elemSCL nodoFilaSCL;
typedef nodoFilaSCL *filaSCL;
Ora, nel main, vorrei inserire i dati.
#include "definizioni.h"

int main()
{
	filaSCL fila, punt_fila = NULL, punt_capofila;
	
	fila = malloc(sizeof(fila));
	printf("\nNome: "); scanf("%s", fila->elemento.nome);
	printf("\nCognome: "); scanf("%s", fila->elemento.cognome);
	
	//Collegamento al nodo successivo
}
Il compilatore non mi da errori però non so se ho fatto giusto..?
Il collegamento al nodo successivo come lo faccio con due strutture?

3 Risposte

  • Re: Linguaggio C, struct e liste

    Due strutture? Perché parli di due strutture?

    E poi, invece di controllare il codice senza sapere cosa controllare, ci dici cosa succede se inserisci i nuovi elementi? Problemi? Errori in esecuzione?
  • Re: Linguaggio C, struct e liste

    oregon ha scritto:


    Due strutture? Perché parli di due strutture?
    Mi riferivo al fatto che ci sono due struct, forse mi sono espresso male..

    oregon ha scritto:


    E poi, invece di controllare il codice senza sapere cosa controllare, ci dici cosa succede se inserisci i nuovi elementi? Problemi? Errori in esecuzione?
    Come ho già scritto su non ho problemi nell'inserimento di nome e cognome..

    Il problema me lo da quando cerco di collegare la lista al nodo successivo..
    ...
    	fila = malloc(sizeof(fila));
    	printf("\nNome: "); scanf("%s", fila->elemento.nome);
    	printf("\nCognome: "); scanf("%s", fila->elemento.cognome);
    	
    	//Collegamento al nodo successivo
    	
    	fila->next = punt_fila; 
    	
    ...

    main.c: error: incompatible types when assigning to type ‘struct elemSCEL *’ from type ‘nodoFilaSCL’
    fila->next = punt_fila;
    ^
  • Re: Linguaggio C, struct e liste

    Nessuno può darmi una mano? Non riesco ad andare avanti..
    Ho notato che, scrivendo solo fila -> next; il compilatore non da errori. Il problema sta allora in punt_fila..
Devi accedere o registrarti per scrivere nel forum
3 risposte