算法导论10.2-7:单链表的逆转

来源:互联网 发布:python实现遗传算法 编辑:程序博客网 时间:2024/06/08 10:27

题目:
给出一个Θ(n)时间的非递归过程,实现对一个含n个元素的单链表的逆转。要求除存储链表本身空间之外,该过程只能使用固定大小的存储空间。
解答:
使用之前实现的单链表进行操作,C语言实现如下:

int single_linked_list_reverse(SLL * L) {    if (L->head == NULL) {        fprintf(stderr, "The single linked list is empty.\n");        return 0;    }    L->tail = L->head;    Node *pre, *current, *next;    pre = L->head;    current = L->head->next;    L->head->next = NULL;    next = NULL;    while (current != NULL) {        next = current->next;        current->next = pre;        pre = current;        current = next;    }    L->head = pre;    return 1;}