C将元素插入升序链表



我的insert方法有问题,因为某种原因,我最终使用了无限循环。这是我的结构:

 struct List {
    char element;
    struct List *next;
 };

这是我的插入方法:

void insert(struct List *first, char el){
    struct List *new=NULL;
    struct List *current = first;
    new = (struct List*) malloc (sizeof(struct List));
    new->element = el;
    new->next = NULL;
    if (first == NULL){
        first = new;    
        return;
    }
    while (1){  //this loop never ends
        if (current->next == NULL) break;
        if (current->next->element < el){
            current = current->next;        
        }else{
            break;
        }
    }
    struct List *ex_next = current->next;
    current->next = new;
    new->next = ex_next;
}

我知道这里有类似的问题:C-按升序插入链表,但这并没有真正帮助我。

insert的第一个参数是指针。但是您需要一个指向指针(struct List **first)的指针。

如果列表为空,则将VALUENULL传递到函数中(方法中的变量first的值为NULL)。然后为其分配一个新的mallocated值并返回。调用端的变量没有更改,您的内存泄漏。

当您传递指针的指针时,变量first保存调用方法的变量的地址。通过这种方式,您可以重新分配它的值。

指针,指针的指针,返回函数指针的函数数组的指针的指针。。。。这就是C的有趣之处;)

相关内容

  • 没有找到相关文章

最新更新