链表的逆序
2016-04-06 23:07
232 查看
单链表的逆序
我们,来看单链表的逆序这个问题。我们应该知道对于空链表或者只有一个节点的链表是不需要逆序的。我们应该首先判断一下这个问题。然后,接着我们维护三个指针分别指向链表的第一第二第三个节点,就是p1,p2,p3;
首先,我们将链表断开就是将p1的next赋空,然后我们开始循环的做一件事情,就是把p2的next赋为p1,然后我们判断p3是不是空(就是如果最后两个节点),如果不是空,我们p2赋值给p1就是把p1向后移动了一个位置,接着我们移动p2,p3就好了,最后我们将头指针指向p2就好了。下面看代码。
我们,来看单链表的逆序这个问题。我们应该知道对于空链表或者只有一个节点的链表是不需要逆序的。我们应该首先判断一下这个问题。然后,接着我们维护三个指针分别指向链表的第一第二第三个节点,就是p1,p2,p3;
首先,我们将链表断开就是将p1的next赋空,然后我们开始循环的做一件事情,就是把p2的next赋为p1,然后我们判断p3是不是空(就是如果最后两个节点),如果不是空,我们p2赋值给p1就是把p1向后移动了一个位置,接着我们移动p2,p3就好了,最后我们将头指针指向p2就好了。下面看代码。
PNODE reverse( PNODE *phead ) { PNODE p1,p2,p3; if(NULL == *phead || NULL == (*phead)->next ) { return *phead; } p1 = *phead; p2 = p1->next; p3 = p2->next; p1 ->next = NULL; while( 1 ) { p2->next = p1; if( NULL == p3 ) { break; } p1 = p2; p2 = p3; p3 = p3->next; } *phead = p2; return *phead; }
相关文章推荐
- caffe源码解析的三个博客分享
- XStream、JAXB 日期(Date)、数字(Number)格式化输出xml
- Android中Styles、Themes、attrs介绍和他们之间的关系
- JavaScript 拖动
- <!DOCTYPE html>的重要性
- 获取请求来源ip地址
- groovy入门2 流程控制
- 序列化操作
- python流程控制和循环
- 笔试练习四
- 树莓派Raspberry Pi首次安装配置
- 解决Couldn't resolve host 'mirrorlist.centos.org
- 结对编程项目---四则运算
- 复利计算-结对编程总结
- 网站——循环图片切换效果(最近做网站,已经快炸了)
- (3) arm 指令
- 迭代器设计模式
- VirtualBox启动报错
- 完全免费!Xamarin应用商店最受欢迎的10款用户界面工具
- springMVC基础注解