Node *deleteAllNodes(Node *root)
{
    Node *ptr = root;
    do {
        Node *np = ptr->m_next;   // ptr は delete されるので次のノードを取得しておく
        delete ptr;                           // ptr を delete
    } while ((ptr = np) != root);    // 次のノードに移動し、先頭でなければループ継続
    delete root;        // root も解放
}
解説:
前: | 次: