读书人

链表有关问题求解

发布时间: 2013-04-20 19:43:01 作者: rapoo

链表问题,求解



//错误的地方:将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;

读书人网 >C++

热点推荐