栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

怎样把一个单链表反序

怎样把一个单链表反序

(1)反转一个链表。循环算法。
List reverse(List n) {
if(!n) {
return n; }
list cur = n.next; list pre = n;
list tmp;
//判断链表是否为空,为空即退出。
//保存头结点的下个结点 //保存头结点

pre.next = null;
while ( NULL != cur.next ) {
tmp = cur; tmp.next = pre pre = tmp;
cur = cur.next;
//头结点的指针指空,转换后变尾结点 //循环直到 cur.next 为空
//实现如图 10.3—图 10.5 所示
}
return tmp; //f 返回头指针
}
(2)反转一个链表。递归算法。
List *reverse( List *oldList, List *newHead = NULL ) {
List *next = oldList-> next; oldList-> next = newHead; newHead = oldList;
//记录上次翻转后的链表 //将当前结点插入到翻转后链表的开头 //递归处理剩余的链表
return ( next==NULL )? newHead: reverse( t, newHead );
}
说明:循环算法就是图 10.2—图 10.5 的移动过程,比较好理解和想到。递归算法的设计虽有一点难 度,但是理解了循环算法,再设计递归算法就简单多了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号