“一元多项式的表示和相加”数据结构,相关疑问

“一元多项式的表示和相加”数据结构,相关疑问
“一元多项式的表示和相加”数据结构,具体描述见如下链接:
在case 0里有如下语句:
else{
DelFirst(ha,qa);FreeNode(qa);}
DelFirst(hb,qb);FreeNode(qb);qb=NextPos(Pb,hb);
qa=NextPos(Pa,ha);break;
在释放qa节点前,ha是qa的前驱,qa是ha的后继,在没有事先
ha->next=qa->next;
的情况下释放了qa,ha的后继指向谁?自动指向ha->next->next?
如果不能自动指向,那释放后的qa=NextPos(Pa,ha)又使qa指向谁?
这样不就使链表断了么?
sicanian1 1年前 已收到1个回答 举报

ggdd 幼苗

共回答了14个问题采纳率:92.9% 举报

不会的,因为每个链表每个节点都是一个指针结构
DelFirst()函数是删除当前链表元素.
举个例子
链表节点的定义:
struct node
{
int val;
node *next;
};
int DeleteElement(node **head, node *deleteMe)
{
node *elem = *head;
if (deleteMe == *head)
{
*head = elem -> next;
free(deleteMe);
return 1;
}
while (elem != NULL)
{
if (elem -> next == deleteMe)//不要误写为elem
{
elem -> next = deleteMe -> next; //这里连接链表,链表不会断开
free(deleteMe);
return 1;
}
elem = elem -> next;
}
return 0;
}

1年前

1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.023 s. - webmaster@yulucn.com