为了账号安全,请及时绑定邮箱和手机立即绑定

删除结点的逆置是为了什么?逆置过程中为什么要将currentNode赋给currentNodeBefore?

为什么要将currentNode赋给currentNodeBefore

正在回答

3 回答

顺序表删除元素,是所有后面的元素往前移动一格。单链表删除节点方便的地方就在这,他不需要所有后面节点前移,而是通过前驱节点连结到后继节点,断开了被删除节点之间的连结。具体实现语句currentNodeBefore->next=currentNode->next;//第i-1个节点与第i+1个节点连接,自然断开与第i个节点的连接。

1 回复 有任何疑惑可以回复我~
#1

京飞

currentNodeBefore->next这句话什么意思啊?
2017-04-29 回复 有任何疑惑可以回复我~
#2

潇慕粉

//就注释了
2017-05-08 回复 有任何疑惑可以回复我~

删除第i个结点需要找到第i和i-1两个结点,所以将currentNode赋给currentNodeBefore,是为了遍历结点,当currentNode为第i个结点的时候,currentNodeBefore是第i-1个结点,然后才能将i-1结点的next指向i+1结点,才能删除i结点、


1 回复 有任何疑惑可以回复我~

bool List::ListDelete(int i,Node *pNode)  

{  

    if(i<0 || i>=m_iLength)   

        return false;  

    Node *currentNode=m_pList;  //保存头节点  

    Node *currentNodeBefore=NULL;    //头节点前一个节点不存在,为NULL

    for(int k=0;k<=i;k++)        //查找第i个节点  

    {  

        currentNodeBefore=currentNode;   //找到第i-1个节点  

        currentNode=currentNode->next;   //循环结束代表currentNode就是第i节点  

    }  

    currentNodeBefore->next=currentNode->next;//第i个节点指针域赋给第i-1节点指针域  

    pNode->data=currentNode->data; //删掉节点的数据域赋给pNode输出  

    delete currentNode;   //释放删除节点的内存  

    currentNode=NULL;  

    m_iLength--;        //节点长度减1  

    return true;  

}  


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

删除结点的逆置是为了什么?逆置过程中为什么要将currentNode赋给currentNodeBefore?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信