反转部分单向链表
来源:互联网 发布:蝴蝶效应3 知乎 编辑:程序博客网 时间:2024/05/29 06:49
反转部分单向链表:
//反转部分单向链表的public class ReverseSubList{ //链表节点的定义 public static class Node{ public int value; public Node next; //节点的定义 public Node(int data) { this.value=data; } } //反转部分链表 public static Node reverseSublist(Node head, int from,int to) { if(head==null||from <0||to<0) { return head; } Node p=head; int leng=0; Node tPre=null; //获取反转起始节点的前一个节点 Node tPos=null; //获取反转结束节点的后一个节点 //计算链表长度 while(p!=null) { ++leng; tPre=(leng==from-1?p:tPre); //找到反转起始节点的前一个节点 tPos=(leng==to+1?p:tPos); //找到反转结束节点的后一个节点 p=p.next; } if(from>leng||to>leng||from>to) { return head; } p=tPre==null?head:tPre.next; //找到要起始反转的节点 Node node2=p.next; p.next=tPos; //起始反转的节点指向反转结束节点的后一个节点 Node next=null; while(node2!=tPos) { next=node2.next; node2.next=p; p=node2; node2=next; } if(tPre!=null) { tPre.next=p; return head; } return p; } //打印链表 public static void PrintList(Node head) { while(head!=null) { System.out.print(head.value+" "); head=head.next; } System.out.println(); }public static void main(String []args){Node node=new Node(1);node.next=new Node(2);node.next.next=new Node(3);node.next.next.next=new Node(4);node.next.next.next.next=new Node(5);PrintList(node);Node mode=reverseSublist(node,2,4); //反转节点2---4 PrintList(mode); }}
阅读全文
0 0
- 反转部分单向链表
- 反转部分单向链表
- 反转部分单向链表 Python 版
- 链表之反转部分单向链表
- 链表问题---反转部分单向链表
- Leetcode Reverse Linked List II 反转部分单向链表
- 单向链表反转
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 单向链表反转
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 单向链表反转
- 3 OF 100DAYS
- interrupte()方法详解
- 文章标题
- android studio升级到3.0之后的一些配置变化
- Java IM环信服务端集成之用户注册(三)
- 反转部分单向链表
- 深入理解行内元素的布局
- 手把手教你写Dockerfile, 附赠MongoDB和Nginx Dockerfile编写实例
- 纪念C语言之父丹尼斯·里奇离世6周年
- C++三大特性 -- 封装
- Java Api Consumer 连接启用Kerberos认证的Kafka
- 百度编辑器的使用
- 链栈
- elk安装及使用四(logstash的安装及使用)