Ciao!
Stavo provando a scrivere un codice per aggiungere un nodo ad una lista concatenata. L'esempio del libro (che ho provato a copiare su CodeBlocks) non funziona, perciò ho provato da sola a farlo.
Per prima cosa ho fatto una lista con 4 nodi e ho provato a printarla con MostraLista. Poi ho provato a creare e aggiungere il nuovo nodo q.
#include <stdio.h>
#include <stdlib.h>
struct nodo{
int chiave;
struct nodo *succ;
struct nodo *prec;
};
typedef struct nodo nodo;
void MostraLista(nodo *lista);
nodo NuovoNodo(nodo *nodo,int chiave);
int main()
{
nodo p1 = {1, NULL, NULL};
nodo p2 = {2, NULL, NULL};
nodo p3 = {3, NULL, NULL};
nodo p4 = {4, NULL, NULL};
p1.succ = &p2;
p2.succ = &p3;
p3.succ = &p4;
p4.prec = &p3;
p3.prec = &p2;
p2.prec = &p1;
int *lista = &p1;
MostraLista(lista);
printf("\n---------------\n");
NuovoNodo(nodo ????, int chiave); //non so come mandare con nodo
return 0;
}
void MostraLista(nodo *lista){
nodo *tmp = lista;
while( tmp != NULL){
printf("%d\n", tmp->chiave);
tmp = tmp->succ;
}
}
nodo NuovoNodo(nodo *nodo, int chiave){ //ho usato nodo NuovoNodo perché il mio prof faceva così, il libro usava void
nodo q = malloc(sizeof(nodo));
//voglio aggiungere un nodo tra p1 e p2, dando per scontato che ci sia memoria sufficiente per farlo
q->prec = p1;
q->succ = p1->succ;
p1->succ->prec = q;
p1->succ = q;
}
è evidente che ho sbagliato qualcosa... ma cosa?