ciao, prima di ogni cosa, appena crei il puntatore alla lista:
codice:
static NOTIFIES n;
devi subito inizializzarlo a NULL altrimenti la lista potrebbe dare problemi!
Poi ci sono dei problemi nella funzione di inserimento nella lista in quanto quando il puntatore della testa della lista non è NULL devi scorrere la lista fino a quando non incontri NULL però comunque ti devi memorizzare il puntatore all'ultimo "blocco" allocato in modo tale che puntatore(ultimoBlocco)->pointer = NULL; a questo punto allochi un nuovo blocco della struct ma non devi usare lo stesso puntatore con il quale hai percorso tutta la lista, ma un nuovo puntantore! comunque ti posto tutto il codice corretto e dimmi se c'è qualcosa che non va...ciao
codice:
#include <stdio.h>
#include <stdlib.h>
struct _NOTIFIES{
long event;
long notify;
struct _NOTIFIES* pointer;
};
typedef struct _NOTIFIES* NOTIFIES;
NOTIFIES NewNotify(NOTIFIES notifies,long event, long notify);
int main()
{
NOTIFIES n=NULL;
n=NewNotify(n,7,8);
printf("primi valori inseriti: %d %d \n",n->event,n->notify);
n=NewNotify(n,9,80);
printf("primi valori inseriti: %d %d \n",n->event,n->notify);
n=n->pointer;
printf("altri valori inseriti: %d %d \n",n->event,n->notify);
system("pause");
return 0;
}
NOTIFIES NewNotify(NOTIFIES notifies,long event, long notify)
{
NOTIFIES cursor, ptr;
if(notifies==NULL)
{
notifies=(NOTIFIES)malloc(sizeof(struct _NOTIFIES));
if(ptr!=NULL)
{
notifies->event=event;
notifies->notify=notify;
notifies->pointer = NULL;
}
}
else
{
ptr=notifies;
while( ptr->pointer != NULL ){
ptr=ptr->pointer;
}
cursor=(NOTIFIES)malloc(sizeof(struct _NOTIFIES));
if(cursor!=NULL)
{
cursor->event=event;
cursor->notify=notify;
cursor->pointer=NULL;
ptr->pointer = cursor;
}
}
return notifies;
}