您好我正在制作深度复制此实施链接列表的方法。
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;
}
}
这是正确的方法,并且这种记忆效率也是如此。任何帮助将不胜感激。