请问下列程序在删除节点时一定要用pt指针吗Status PolyDifferential(LinkedPoly &L){LinkedPoly p,q,pt;q=L;p=L->next;while(p!=L){if(p->data.exp==0){pt=p;p=p->next;q->next=p;free(pt);//为什么在删除这个结点时要先用pt指向它

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 01:41:17

请问下列程序在删除节点时一定要用pt指针吗Status PolyDifferential(LinkedPoly &L){LinkedPoly p,q,pt;q=L;p=L->next;while(p!=L){if(p->data.exp==0){pt=p;p=p->next;q->next=p;free(pt);//为什么在删除这个结点时要先用pt指向它
请问下列程序在删除节点时一定要用pt指针吗
Status PolyDifferential(LinkedPoly &L)
{
LinkedPoly p,q,pt;
q=L;
p=L->next;
while(p!=L){
if(p->data.exp==0){
pt=p;
p=p->next;
q->next=p;
free(pt);
//为什么在删除这个结点时要先用pt指向它?
}
else{
p->data.coef=p->data.coef*p->data.exp;
p->data.exp--;
q=p;
p=p->next;
}
}
return OK;
}
如果在删除结点时用
p->next=q->next;
free(q);
q=p->next;代替
pt=p;
p=p->next;
q->next=p;
free(pt);
有什么不好?
写错了是用q->next=p->next;
free(p);
p=q->next;代替

请问下列程序在删除节点时一定要用pt指针吗Status PolyDifferential(LinkedPoly &L){LinkedPoly p,q,pt;q=L;p=L->next;while(p!=L){if(p->data.exp==0){pt=p;p=p->next;q->next=p;free(pt);//为什么在删除这个结点时要先用pt指向它

q->next=p->next;
   free(p);
   p=q->next;

这里你把p释放了以后,p怎么还能指向下一个节点?所以你要多定义一个节点来表示待删除节点

 

1.我们必须知道对哪个链表进行操作,所以表头指针head是必须知道的.

2.一般来说,待删除的结点是由结点的数据确定的.然而我们还要操作待删除结点之前的结点(或指针),以连接前后两段链表.

3.令pGuard指针为待删除结点的前趋结点指针.由于要对待删除结点作内存释放,需要有一个指针p指向待删除结点.

4.如果待删除结点为头结点,则我们要操作表头head,作为特殊情况处理.(你这里没有考虑)

5.在删除结点的过程中,仍然要始终保持所有的结点都在我们的控制范围内,保证链表的完整性.为了达到这一点,我们还是采用先连后断的方式:先把待删除结点的前趋结点和它的后继结点连接,再把待删除结点与它的后继结点断开,并释放其空间.

请问下列程序在删除节点时一定要用pt指针吗Status PolyDifferential(LinkedPoly &L){LinkedPoly p,q,pt;q=L;p=L->next;while(p!=L){if(p->data.exp==0){pt=p;p=p->next;q->next=p;free(pt);//为什么在删除这个结点时要先用pt指向它 在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个节点的操作为() 已知带表头结点的非空单链表L,指针P指向L链表中的一个结点(非首尾结点),试从下列选项中选择合适的语句序列1,删除P节点的直接后继结点的语句是()2.删除P节点的直接前驱结点的语句是( 在支路电流法中,用基尔霍夫电流定律列节点电流方程时,若电路有M个节点,则一定要列出M个方程来, 在长度大于1的循环列表中,既无头结点也无根结点,S维指向列表中的某个节点指针,删除这个S结点的前续结点只限明天下午之前! 燃料电池的电极一定要用Pt吗 请问index.我怎么删除不了,系统说删除导致程序无法进行? hypermesh中在实体节点上施加温度载荷,导入到ansys中时出现下列警告提示,请问我该如何解决呢? free launch bar可以删除吗在添加或删除程序里有一个free launch bar汉化版,不知道可不可以卸载,他是干什么用的. 一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点. 请问:pt=*(pointer+n) 和pt=*(pointer+n) 有什么区别?(pt事先声明为指针变量)不好意思,搞错了:应该是请问:pt=*(pointer+n) 和pt=(*pointer+n) 有什么区别?(pt事先声明为指针变量),谭浩强里面的书的 广数980TA程序全部删除用什么指令 已知一个不带头结点也无头指针并且大于1的循环列表,试写一算法,删除P所指的链结点的直接前驱的结点用C语言数据结构算法写一个程序. midas/civil中 定义了节点荷载 且各个节点荷载在不同的荷载组中 如何一次就删除这些荷载 手机里有许多英文程序 不知道那个可以删除就是下列是做什么用的?那些可以删除额?open c libssl commonopen c libssl patchopen c libz support files pips installerpython runtimesignalseversymbian os pipes upgradesymbian os 请问BAS BRAS SR 作用,区别,分别用在什么节点? 在链接表数据结构中,由于相邻的两个节点(数据项)在存储的物理位置上也相邻,因此在插入和删除数据项时需要移动其它相关的数据项来完成. ANSYS操作的一些问题在建模时,已经在关键点或者节点之间连接起来的线,有时候把ANSYS最小化一下,或者由于想把模型转个角度时,那些线就会不见了,但是用删除功能时,还是可以选到这些隐藏的