以递归方式打印类中的链接列表c ++

时间:2014-04-18 20:38:39

标签: c++ list class recursion linked-list

我正在寻找一种最简单的方法来打印类中的私有链表。 (按相反顺序)

我的方法是调用将Head作为参数插入的类的函数,返回是执行任务的另一个函数。

我这样做是因为之前我必须通过Getter函数获取Head,然后将其插入函数调用中。所有这些都在课外。

void Arreglo::InfoDealer(ofstream &salida)
{
    return InfoDealer_f(Head, salida);
}

void Arreglo::InfoDealer_f(NodePTR Ptr, ofstream &salida)
{
    if (Ptr == NULL)
        return;
    InfoDealer_f(Ptr->Next, salida);
    //output stuff
}

这是对的吗?有一个更好的方法吗?谢谢。 我是CS的新手,所以请耐心等待。

2 个答案:

答案 0 :(得分:1)

我不太明白你的例子,但是,你通常有一个公共方法(接口)和一个私有帮助器方法:

class my_class
{
    public:
       void print( ostream& out );

    private:
       NodePtr _head;
       void print_helper( NodePtr node, ostream& out );

}

void my_class::print( ostream& out ){ print_helper( _head, out ); }

答案 1 :(得分:1)

嗯,你通常有正确的想法,你的榜样最终应该有效 还有一些要考虑的要点:

  • 使用流插入器种类的公共好友功能来更好地使用惯用法:

    inline ostream& operator<<(ostream& o, const myclass& m) {
        m.print_helper(m._head, o);
        return o;
    }
    // Add in class:
        friend ostream& operator<<(ostream& o, const myclass& m);
    
  • 不要隐藏在typedef后面的指针,它只是模糊了一些东西。 NodePTR应为Node*