使用非递归过程以O(N)时间反转单链表 使用常数附加空间
2016-03-25 09:30
357 查看
数据结构与算法分析——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指针为0 do { 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指向原链表中的最后一个节点 } }
相关文章推荐
- 请求如何进入ASP.NET MVC框架
- Prim算法和Kruskal算法求最小生成树
- Keras(1):Keras安装与简介
- gcc编译参数-fPIC的一些问题
- JAVA线程
- QueryPerformanceCounter
- skytraq数据格式说明
- matlab vs python
- SharedPreferences存储,用于存储较复杂的数据,以xml格式保存
- win10 IOT树莓派-环境搭建
- window打开mysql命令行模式
- Bzoj2212:[Poi2011]Tree Rotations:线段树的合并
- e4rat对启动时间的优化
- vi 常用命令行
- 加密,解密 自定义密钥
- document.cookie.indexof的解释
- 开源软件的商业化策略模型
- Linux之内存使用限制
- sha2 替换sha1 时间表
- 持续集成篇_04_Maven使用Jetty或Tomcat运行项目