我正在尝试在链表中实现功能,这将添加新的注释。 该新节点是上一个节点和下一个节点的总和。
这是我的代码,但我不知道哪里出错了。
void change(Node *head){
Node *p = head;
Node *temp = new Node;
temp->next = NULL;
while(p != NULL){
temp->data = p->data + p->next->data;
temp->next = p->next;
p->next = temp;
p = p->next;
}
}
答案 0 :(得分:2)
如果head
为null,则此函数分配一个新的Node
,但是没有指向新节点的消息,因此它将被泄漏。
如果head
不为null,而是列表的最后一个节点(即唯一的节点),则p->next->data
通过null指针进行间接调用,并且程序的行为未定义。 / p>
否则,在第一次迭代中,p->next = temp; p = p->next;
使p
与temp
相同,而在第二次迭代中,p->next = temp;
使节点指向自身,并且循环永远不会终止。
答案 1 :(得分:0)
如果我在查看代码后正确理解了问题,则在函数调用后所做的更改将不会保留。
var margin = {top:20, right: 20, bottom: 20, left: 20};
var svg = d3.select("#visualisation")
.append("svg")
.attr("width", 960)
.attr("height", 600);
var g = svg.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
g.append("circle")
.attr("class", "circle")
.attr("cx", 200)
.attr("cy", 100)
.attr("r", 50)
.attr("fill", "red")
.style("opacity", 0.5);
var tooltip = d3.select("#visualisation")
.append("div")
.style("visibility", "hidden");
d3.select(".circle")
.on("mouseover", mouseover)
.on("mousemove", mousemove)
.on("mouseout", mouseout)
function mouseover() {
d3.select(this)
.transition()
.duration(500)
.style("opacity", "1");
tooltip
.style("visibility", "visible")
// .style("opacity", 1)
}
function mousemove() {
tooltip.html("is it visible?")
.style("left", (d3.select(this).attr("cx")) + "px")
.style("top", (d3.select(this).attr("cy")) + "px")
}
function mouseout() {
d3.select(this)
.transition()
.duration(500)
.style("opacity", 0.5);
tooltip
.style("visibility", "hidden")
// .style("opacity", 0);
}
到
void change(Node *head ){
请尝试一下。
编辑:-
其他人指出的代码中还有其他问题
1.取消引用空指针
2.无效的内存访问。