不插入也不保留下一个和上一个节点的地址:我正在尝试从文件中读取输入;它可以正确读取所有数据,并根据每一行创建一个 Aeronava 对象。似乎插入不起作用。有什么建议吗?
void insertFAV_Av(FAVnode*list, Aeronava *av){
FAVnode* nn = (FAVnode*)malloc(sizeof(FAVnode));
//first = list;
nn->infoUtil = (Aeronava*)malloc(sizeof(Aeronava));
nn->infoUtil->idAeronava = (char*)malloc(strlen(av->idAeronava) + 1);
//strcpy(nn->infoUtil->idAeronava, av->idAeronava);
nn->infoUtil = av;
if (first == NULL){
nn->prev = nn->next = nn;
first = nn;
}
else{
list = first;
while (list->next != first){
list = list->next;
}
nn->prev = list;
list->next = nn;
nn->next = first;
}
}
struct Aeronava{
char* idAeronava;
tipA tipAero;
short int nrLocuri;
double greutateMaxima;
};
struct FAVnode{
FAVnode*next;
FAVnode*prev;
Aeronava* infoUtil;
};
最佳答案
nn->prev = list; // 1
list->next = nn; // 2
nn->next = first; // 3
第 1 行和第 2 行将 nn
双向链接到 list
,但第 3 行将 nn
链接到 first
只在一个方向。您在这里缺少相反的链接更新:
first->prev = nn;
关于C 双向链表插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30259600/