使用非递归过程以O(N)时间反转单链表 使用常数附加空间

来源:互联网 发布:惠州淘宝培训 编辑:程序博客网 时间:2024/04/26 14:59

数据结构与算法分析——c语言描述 练习3.12 答案

书上给的答案默认是无头链表


void ReserveList_L(List L) {//反转链表Position currentPos;//原链表中p为q的前驱Position nextPos;Position temp;//临时地址变量if (L->Next && L->Next->Next) {//L具有两个节点及两个节点以上,一个节点或空的不用管currentPos = L->Next;//p指向第一节点nextPos = L->Next->Next;//q指向第二个节点currentPos->Next = NULL;//让第一个节点的NEXT指针为0do {temp = nextPos->Next;//temp记录q的Next指针nextPos->Next = currentPos;//让q的Next指针指向p,反转链表方向currentPos = nextPos;//p指针前进一位nextPos = temp;//q指针前进一位} while (nextPos != NULL);//当q为空的时候,p就是原链表的最后一个节点L->Next = currentPos;//让Head指向原链表中的最后一个节点}}


1 0
原创粉丝点击