[C] stack implementato con linked list

di il
1 risposte

[C] stack implementato con linked list

Salve, devo implementare uno stack mediante liste concatenate, il mio problema è che non riesco ad accedere al campo data del nodo.


typedef struct StackLst StackLst;

struct StackLst {
  DataObject *data;
  StackLst *next;
};

/*COSTRUTTORE DELLO STACK-LIST*/
void* constructStackLst()
{
	StackLst *stkLst=(StackLst*)malloc(sizeof(StackLst));
	if(stkLst!=NULL)
	{
		stkLst->data=NULL;
		stkLst->next=NULL;
	}
	else
	{
		("ERRORE: MEMORIA NON DISPONIBILE");
	}
	return stkLst;
}	

void pushStackLst(void *stkHead,DataObject *dataObj)
{
	StackLst *head=(StackLst*)stkHead; //Cast del void pointer ricevuto
	
	StackLst *newNode=(StackLst*)malloc(sizeof(StackLst));
	newNode->data=adtClone(dataObj);  //adtClone mi crea una copia del dato ricevuto in input
	newNode->next=head;
	head=newNode;
}
Da qui in avanti quando cerco di accedere al campo data di un nodo (ad esempio nella funzione top) mi da segmentation fault, qualcuno sa dirmi il perche?

DataObject* topStackLst(void *stkHead)
{
	StackLst *head=(StackLst*)stkHead;

	DataObject *top=adtClone(head->data); //ISTRUZIONE CHE MI DA SEGMANTATION FAULT
	return top;
}

1 Risposte

  • Re: [C] stack implementato con linked list

    1) senza il sorgente di adtClone non possiamo dirti niente di preciso
    2) PERCHÉ copi i dati? Che senso ha questo quando usi i puntatori?
Devi accedere o registrarti per scrivere nel forum
1 risposte