如何深度复制此链接列表

时间:2016-05-07 13:52:27

标签: c linked-list

您好我正在制作深度复制此实施链接列表的方法。

    struct node_t {
      int priority,moves;
      int** data; // 2D matrix of integers
      struct node_t *prev_board;
    };

这是我到目前为止所拥有的。此方法接受源列表并返回深层副本列表。

    struct node_t* copy_list(struct node_t* src, int len) {

    if (src != NULL) {
        struct node_t* list = malloc(sizeof(struct node_t));
        struct node_t* temps = malloc(sizeof(struct node_t));
        temps = src;
        while (src->prev_board != NULL) {
            list->prev_board = malloc(sizeof(struct node_t));
            list->data = (int **)malloc(len * sizeof(int *));
            int r = 0;
            for (r = 0; r < len; ++r) {
                list->data[r] = (int *)malloc(len * sizeof(int ));
            }
            copy_v(src->data, list->data,len); // Copies all the array values
            list->priority = src->priority;
            src = src->prev_board;
            list = list->prev_board;
        }
        list = temps;
        return list;
    }
    else {
        return NULL;
    }
}

这是正确的方法,并且这种记忆效率也是如此。任何帮助将不胜感激。

0 个答案:

没有答案