标题:链表删除节点时,我老是算不对迭代
只看楼主
ycyu1455
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2016-4-3
结帖率:33.33%
 问题点数:0 回复次数:1 
链表删除节点时,我老是算不对迭代
void Delete(struct Student* pHead,int iIndex)
{
    int i;                          
    struct Student* pTemp;               
    struct Student* pPre;                    
    pTemp=pHead;                        
    pPre=pTemp;                    

    printf("----delete NO%d member----\n",iIndex);            
    for(i=1;i<iIndex;i++)                        
    {
        pPre=pTemp;                //循环一:pRre与pTemp同样是头指针,也能指向首节点,循环二:pPre将获取pTemp第二节点首地址

        pTemp=pTemp->pNext;        //循环一:pTemp获取第二节点首地址,循环二:pTemp获取第三节点首地址,此时结束for
    }
    pPre->pNext=pTemp->pNext;          //此时pPre是第二节点,而pPre->pNext就是第二节点的指针变量获取第四节点的首地址,所以我理解是被删除的是第三节点,但是实际为什么是第二个节点被删除了呢

    free(pTemp);                           
    iCount--;                        
}

[此贴子已经被作者于2016-7-14 21:07编辑过]

搜索更多相关主题的帖子: member 
2016-07-14 20:30
ycyu1455
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2016-4-3
得分:0 
是我马虎了,我现在有点伸手党倾向了,for(i=1;i<iIndex;i++) 只会执行一次,所以不会有第二次执行,因此pPre还是头指针,当结束for时,pPre->pNext就是给第一个节点的指针变量赋值
2016-07-14 21:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466936-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015091 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved