递归每个节点之后的所有节点

问题描述 投票:0回答:1

嗨,我需要做一个递归函数,接受输入列表的头,然后将每个节点之后的所有节点加到每个节点上。例如,如果列表是1-> 2-> 3,则列表将在6-> 5-> 3中进行修改。我做了一个迭代函数,效果很好,但是我不知道如何递归,您能帮上忙吗?这是一个迭代的:

int modify(node *head){

    node **curr;
    node *track = head;
    int i;

    while (track->next != NULL){
        *curr = (track)->next;
        while((*curr)->next != NULL){
            track->val += (*curr)->val;
            *curr = (*curr)->next;
        }
        track = track->next;
    }

    track = head;

    while (track->next != NULL){
        printf("%d ",track->val);
        track = track->next;
    }

    printf("\n");

    return head->val;

}

嗨,我需要做一个递归函数,接受输入列表的头,然后将每个节点之后的所有节点加到每个节点上。例如,如果列表是1-> 2-> 3,则该列表将在6-> ...

c99
1个回答
0
投票
int modify(node *head){
    if(!head) return 0;
    head->val = modify(head->next)+head->val;
    return head->val;
}
© www.soinside.com 2019 - 2024. All rights reserved.