我想将此代码从动态分配更改为静态。 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;
}
答案 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;
}
希望它可以帮到你