作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/26 01:42:50
“一元多项式的表示和相加”数据结构,相关疑问
“一元多项式的表示和相加”数据结构,具体描述见如下链接:
在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指向谁?
这样不就使链表断了么?
“一元多项式的表示和相加”数据结构,相关疑问
不会的,因为每个链表每个节点都是一个指针结构
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;
}