问题描述
给出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)
{
}
解决方法
指针一开始似乎有些棘手。我强烈建议您在执行任何代码之前,先画出要实现的算法(涉及数据结构和指针)。链表是开始学习它们的好方法。
在实现中,您可以采用几种方法,因为您必须考虑不同的情况:
- 插入列表的开头或空列表中:我们创建节点,并将左指针与列表的开头交换。
- 插入列表的中间:我们使用辅助指针迭代列表,直到所需位置,然后创建新节点并重定向必要的指针(新节点的指针和邻居节点的指针)。
- 插入列表的末尾:我们迭代直到最后一个元素,创建新节点,然后使用指针将它们彼此连接。
您可以尝试实现一个,然后尝试另一个。如果您正在学习,它不一定是完美的,它必须使您了解指针和数据结构的工作原理。
我相信您会发现this link很有用,它非常完整,并且在代码中包含大量示例。