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

“一元多项式的表示和相加”数据结构,具体描述见如下链接:http://wenku.baidu.com/view/9925c5bff121dd36a32d8204.html在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指向谁?这样不就使链表断了么?
2026年09月25日 08:38
有1个网友回答
网友(1):

不会的,因为每个链表每个节点都是一个指针结构

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;
}