C语言 反向链表(段故障)



我的目标是创建一个对List执行反向操作并返回反向List的函数。

Root --> First element in the List, 
size --> Size of the list, 
str -->  Data (string) in the list and 
next --> Points to next node in the List. 

问题是,我得到分割故障核心转储。

请帮我解决这个问题。

提前感谢

typedef struct {
    element *root;
    int size;
} list;

typedef struct _element {
    char* str;
    struct _element *next;
} element;

list* reverse_list(list *lst) {
    lst = malloc(sizeof(list));
    element *aux1, *aux2, *aux3;
    aux1 = malloc(sizeof(element));
    aux2 = malloc(sizeof(element));
    aux3 = malloc(sizeof(element));
    aux1 = lst->root;
    aux2 = NULL;
    while (aux1->next != NULL) {
        aux3 = aux1->next;
        aux1->next = aux2;
        aux2 = aux1;
        aux1 = aux3;
    }
    lst->root = aux1;
    return lst;
}

首先我建议您了解什么是封装。我明白这是一个示例,但将代码拆分为create_list reverse_list destroy_list是一个很好的实践。

问题在这里:

   aux1 = lst->root;
   aux2 = NULL;

松开指向aux1和aux2的指针。这是一个内存泄漏,使用gdb之类的调试器很容易跟踪。当while试图读取aux1时,它会得到一个未定义的指针,其中包含垃圾值

您还需要阅读有关RAII的内容

相关内容

  • 没有找到相关文章

最新更新