Allocazione Dinamica

di il
2 risposte

Allocazione Dinamica

Vogliamo allocare dinamicamente 2 record contenente ciascuno 3 numeri interi, e poi voglio agganciare il primo record al secondo come se fossero 2 vagoni di un treno.
#include<malloc.h>
#include<windows.h>
#include<iostream>
#define MAXpv 4
#define MAXsv 3
using namespace std;

struct vagone1
{
	int *a;	
};

struct vagone2
{
	int *b;
};

main()
{
struct vagone1 *pv;
struct vagone2 *sv;
int i;

pv=(vagone1*)malloc(MAXpv*sizeof(int));
sv=(vagone2*)malloc(MAXsv*sizeof(int));

pv->a[0]=2;
pv->a[1]=1;
pv->a[2]=4;

sv->b[0]=0;
sv->b[1]=1;
sv->b[2]=3;

//pv->a[4]=sv->b[3];

for(i=0;i<4;i++)
{
	
	cout<<pv->a[i];
}

}
Non so come agganciare i dati presenti in b nella 4 casella di a. Qualche consiglio perfavore?

2 Risposte

  • Re: Allocazione Dinamica

    A parte il fatto che l 'allocazione è sbagliata e che non si capisce perché usi delle strutture, il mistero più grande è su questa

    pv->a[4]=sv->b[3];

    e non si capisce cosa tu intenda ...

    Ma a che ri serve tutto ciò? Magari la soluzione al tuo problema è un'altra...
  • Re: Allocazione Dinamica

    Non ti servono 2 strutture distinte (di solito). Basta la stessa struttura ripetuta N volte, e con un puntatore alla struttura all'interno:
    struct vagone
    {
    	int *a;
    	struct vagone *next;	
    };
    Il collegamento lo fai così:
    struct vagone *testa = malloc(sizeof(struct vagone)); // primo vagone
    testa->next = malloc(sizeof(struct vagone));  // secondo vagone
    testa->next->next = NULL;
    Se vuoi fare un treno di N vagoni devi predisporre un ciclo:
    struct vagone *testa = malloc(sizeof(struct vagone)); // vagone di testa
    struct vagone *tmp = testa;	// creo un puntatore temporaneo e lo faccio puntare al vagone di testa
    for (int i = 1; i < N; i++){
    	tmp->next = malloc(sizeof(struct vagone));	// creo un vagone e lo collego al precedente
    	tmp = tmp->next;	// sposto il puntatore temporaneo sul nuovo vagone
    }
    tmp->next = NULL;	// non ci sono ulteriori vagoni agganciati
    S.E.&.O.
Devi accedere o registrarti per scrivere nel forum
2 risposte