问一下关于链表类的RemoveAt函数如果用RemoveAt删除了一个节点,(不是头、尾,是中间的其中一个),那样遍历链表时能不能完全遍历?假设已有一个链表m_PtrList,里面有若干条数据,首先我删除了其中几条记录,(中间的),然后遍历POSITION pos=m_PtrList.GetHeadPosition();
for(int i=0;i<m_PtrList.GetCount();i++)
{
m_PtrList.GetAt(pos);
m_PtrList.GetPrev(pos);
}
这样会有什么问题吗?
for(int i=0;i<m_PtrList.GetCount();i++)
{
m_PtrList.GetAt(pos);
m_PtrList.GetPrev(pos);
}
这样会有什么问题吗?
解决方案 »
- 关于登陆验证
- 画图程序中删除选中的图形该怎么编写?
- getsavedcustomcolors返回值问题
- 请问:如何在MimeFilter过滤器中获得当前过滤的WebBrowser对象指针?
- 关于枚举注册表键值问题
- 虽然编程时出现什么怪问题都不奇怪 但这个问题让我见鬼了 请看!!!!!!!!
- 如何让RichEdit中的内容只能输一行,且位于窗口的中间(包括x,y方向)?
- 请问如何在扩展DLL中实现splitter window,谢谢!
- 该怎么办?
- 我是一个VC初学者,请问怎样才能将所画的线一直保留在窗体上?
- 电力自动化系统----通信管理机
- DeleteFile失败 原因是文件被占用 能设置文件属性 将占用的文件删除不
CObList list;
POSITION pos1, pos2;
CObject* pa;list.AddHead(new CAge(21));
list.AddHead(new CAge(40));
list.AddHead(new CAge(65)); // List now contains (65 40, 21).
for (pos1 = list.GetHeadPosition(); (pos2 = pos1) != NULL;)
{
if (*(CAge*) list.GetNext(pos1) == CAge(40))
{
pa = list.GetAt(pos2); // Save the old pointer for
//deletion.
list.RemoveAt(pos2);
delete pa; // Deletion avoids memory leak.
}
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &list << _T("\n");
#endif
我的问题是会不会出现链表断开,个别没有链接到的情况