c++ - 将元素插入链表 C++
问题描述
给定 EleList 类,我该如何编写 Insert() 函数的实现?我从来没有真正使用过指针,所以这个简单的问题真的让我很难过,如果可能的话,我会很感激相关学习材料的链接。
class EleList
{
public:
EleList( char cData )
: m_cData(cData)
, m_Left(0)
, m_Right(0)
{
}
static void Insert( EleList* InsertEle,
EleList* InsertPos);
private:
char m_cData;
EleList* m_Left;
EleList* m_Right;
};
// Insert() function
void EleList::Insert( EleList* InsertEle,
EleList* InsertPos)
{
}
解决方案
一开始,指针似乎有点棘手。我强烈建议您在编写任何代码之前,在涉及数据结构和指针时将您想要实现的算法画在纸上。链表是开始学习它们的好方法。
在实现中,您可以采取多种方法,因为您必须考虑不同的情况:
- 在列表的开头或空列表中插入:我们创建节点并将左指针与列表的头部交换。
- 在列表中间插入:我们使用辅助指针迭代列表直到所需位置,我们创建新节点并重定向必要的指针(新节点的指针和相邻节点的指针)。
- 在列表末尾插入:我们迭代直到最后一个元素,创建新节点并使用指针将它们相互连接。
您可以尝试实施一个,然后从那里尝试另一个。如果你在学习,它不一定是完美的,它必须让你理解指针和数据结构是如何工作的。
我相信您会发现此链接很有用,它非常完整,并且在代码中有大量示例。