关于逆转链表
来源:互联网 发布:淘宝在手机能卖东西吗 编辑:程序博客网 时间:2024/05/18 03:39
看到书里关于让链表逆序的方法,是从链表的尾巴开始把数据把数据复制到一新的链表上去,以此循环。对于链表这种线性结构来说,要访问一个元素都要从头遍历。这个算法的效率绝对不好。是(n-1)!。
- /**
- * p194 第四题
- * 逆序链表
- * @param source
- * @return
- */
- public static Node antitone(Node source){
- Node copyHead = null;
- Node copyTail = null;
- Node temp;
- int n;
- if(source==null)
- return null;
- temp=source;
- n=listLength(source);
- System.out.println(n);
- for(int i=n-1;i>0;i--){
- temp=source;
- for(int j=0;j<i;j++){
- temp=temp.link;
- }
- if(i==n-1){
- copyHead=new Node(temp.data,null);
- copyTail=copyHead;}
- else{
- copyTail.addNodeAfter(temp.data);
- copyTail=copyTail.link;}
- }
- return copyHead;
- }
我想了一个逆转链表的算法,效率是线性的。只需遍历每个节点。用一个指针保存一个节点,然后在下次循环中将下个节点指向前一个节点。
代码如下:
- /**
- * 逆转链表
- * @param source
- * @return 原链表的尾指针,转换后的头指针
- */
- public static Node antitone(Node source){
- Node c1=null,c2=null;
- while(source!=null){
- c2=source.link; //要操作的节点
- source.link=c1;//指向前一个节点
- c1=source;//暂存的节点
- source=c2;//指向下一个节点,继续循环
- }
- return c1;
- }
- 关于逆转链表
- 逆转链表
- 单向链表逆转
- 链表的逆转
- 逆转单向链表
- 实现链表逆转
- 线性链表逆转
- 逆转链表
- 链表就地逆转
- 链表逆转
- K链表逆转
- 链表的逆转
- 单向链表逆转
- [链表]逆转链表
- 单向链表逆转
- 链表逆转
- 链表逆转
- java逆转链表
- Unmi 学习 Groovy 之多线程
- 如何查询ubuntu版本
- Does your mother know
- 一种快速的多模式匹配算法
- Asynchronous Method Invocation
- 关于逆转链表
- 犯错了
- Unmi 学习 Groovy 之模板
- KMP 字符串模式匹配详解
- java生成jar压缩包并运行 [转]
- 常量转义字符
- 什么是SDK
- 发票套打程序 源程序发布
- 暂时性试验