“一元多项式的表示和相加”数据结构,相关疑问“一元多项式的表示和相加”数据结构,具体描述见如下链接:在case 0里有如下语句:else{DelFirst(ha,qa);FreeNode(qa);}DelFirst(hb,qb);FreeNode(qb);qb=NextPos
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 21:07:33
![“一元多项式的表示和相加”数据结构,相关疑问“一元多项式的表示和相加”数据结构,具体描述见如下链接:在case 0里有如下语句:else{DelFirst(ha,qa);FreeNode(qa);}DelFirst(hb,qb);FreeNode(qb);qb=NextPos](/uploads/image/z/4533141-21-1.jpg?t=%E2%80%9C%E4%B8%80%E5%85%83%E5%A4%9A%E9%A1%B9%E5%BC%8F%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%92%8C%E7%9B%B8%E5%8A%A0%E2%80%9D%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%2C%E7%9B%B8%E5%85%B3%E7%96%91%E9%97%AE%E2%80%9C%E4%B8%80%E5%85%83%E5%A4%9A%E9%A1%B9%E5%BC%8F%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%92%8C%E7%9B%B8%E5%8A%A0%E2%80%9D%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%2C%E5%85%B7%E4%BD%93%E6%8F%8F%E8%BF%B0%E8%A7%81%E5%A6%82%E4%B8%8B%E9%93%BE%E6%8E%A5%EF%BC%9A%E5%9C%A8case+0%E9%87%8C%E6%9C%89%E5%A6%82%E4%B8%8B%E8%AF%AD%E5%8F%A5%EF%BC%9Aelse%7BDelFirst%28ha%2Cqa%29%3BFreeNode%28qa%29%3B%7DDelFirst%28hb%2Cqb%29%3BFreeNode%28qb%29%3Bqb%3DNextPos)
“一元多项式的表示和相加”数据结构,相关疑问“一元多项式的表示和相加”数据结构,具体描述见如下链接:在case 0里有如下语句:else{DelFirst(ha,qa);FreeNode(qa);}DelFirst(hb,qb);FreeNode(qb);qb=NextPos
“一元多项式的表示和相加”数据结构,相关疑问
“一元多项式的表示和相加”数据结构,具体描述见如下链接:
在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指向谁?
这样不就使链表断了么?
“一元多项式的表示和相加”数据结构,相关疑问“一元多项式的表示和相加”数据结构,具体描述见如下链接:在case 0里有如下语句:else{DelFirst(ha,qa);FreeNode(qa);}DelFirst(hb,qb);FreeNode(qb);qb=NextPos
不会的,因为每个链表每个节点都是一个指针结构
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;
}