首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

链表有关问题,求解

2013-04-20 
链表问题,求解//错误的地方:将m_pHead复原之后,m_pHead-pNext 0x00000000求原因.自己没想出来//没分

链表问题,求解



//错误的地方:将m_pHead复原之后,m_pHead->pNext == 0x00000000;求原因.自己没想出来
//没分了,只剩20分...
typedef struct _tgMONITOR_VERSION {
    ......
    struct _tgMONITOR_VERSION pNext;
}tgMONITOR_VERSION;

int CConnection::IPlugInVersionNode(tgMONITOR_VERSION* pNode) {
long pSaveHead = (long)m_pHead;   //保存头节点地址
while(m_pHead) {  //循环进入最后的一个节点的pNext
m_pHead = m_pHead->pNext;
}
m_pHead = pNode;    //将新节点保存在最后一个节点的pNext
m_pHead->pNext = NULL;    //将新节点的pNext置0
m_pHead = (tgMONITOR_VERSION*)pSaveHead;   //复原头节点地址

return 0;
}

[解决办法]
pSaveHead?的类型为什么要用long呢,干嘛不用 tgMONITOR_VERSION* pSaveHead;
[解决办法]
 m_pHead = (tgMONITOR_VERSION*)pSaveHead; 

long型怎么能转成指针呢?
[解决办法]
我也怀疑是地址转换的问题。
建议先用tgMONITOR_VERSION* 替换掉long, 有时光记录地址是不行的,尤其是结构复杂时,你的tgMONITOR_VERSION里有没有函数或者联合体或者嵌套结构体,这些都可能出问题
[解决办法]
typedef struct _tgMONITOR_VERSION 
{     ......
     struct _tgMONITOR_VERSION pNext; —————— 这里不是 *pNext? 
}tgMONITOR_VERSION;

热点排行