在链接列表中添加新值

时间:2019-05-31 12:57:57

标签: c++ algorithm linked-list

我正在尝试在链表中实现功能,这将添加新的注释。 该新节点是上一个节点和下一个节点的总和。

这是我的代码,但我不知道哪里出错了。

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

2 个答案:

答案 0 :(得分:2)

如果head为null,则此函数分配一个新的Node,但是没有指向新节点的消息,因此它将被泄漏。

如果head不为null,而是列表的最后一个节点(即唯一的节点),则p->next->data通过null指针进行间接调用,并且程序的行为未定义。 / p>

否则,在第一次迭代中,p->next = temp; p = p->next;使ptemp相同,而在第二次迭代中,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.无效的内存访问。