本文主要是介绍算法导论10.2-7:单链表的逆转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
给出一个 Θ(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;
}
这篇关于算法导论10.2-7:单链表的逆转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!