将动态内存分配转换为静态

时间:2018-01-11 02:38:28

标签: c++ pointers

我想将此代码从动态分配更改为静态。 Node是包含其他节点的结构。函数反向的要点是改变头节点的顺序,该节点由一个包含另一个节点的节点填充,该节点包含另一个节点等...这可以使用动态分配正常工作,但无法弄清楚将其转换为静态分配。

struct Node {
    Node *succ;
    int val;
    Node (int pval) : val{ pval }, succ {} {
    }
};
void reverse() {
   Node *new_head = {};
   while(head) {
     auto p = new Node{*head};
     p->succ = new_head;
     new_head = p;
     p = head;
     head = head->succ;
     delete p;
   }
   head = new_head;
}

1 个答案:

答案 0 :(得分:1)

如果没有动态分配,你可以做到这一点:

void inverser() {
        Noeud *end{ queue };
        for (; end != tete;) {
            Noeud *old_tete{ tete };
            for (; old_tete->succ != end; old_tete = old_tete->succ);
            end->succ = old_tete;
            old_tete->succ = nullptr;
            end = old_tete;
        }
        tete = queue;
    }

希望它可以帮到你