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

Convert dynamic memory allocation to static

本文关键字:静态 转换 分配 动态 内存      更新时间:2023-10-16

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

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;
}
以下是

在没有动态分配的情况下执行此操作的方法:

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;
    }

希望对您有所帮助