Java与算法(5)
来源:互联网 发布:im短域名 编辑:程序博客网 时间:2024/05/16 10:38
Java与算法(5)
题目:
反转单链表和双链表
public class ReverseLink {public static class Node {int data;Node next;public Node(int data) {// TODO Auto-generated constructor stubthis.data = data;}}public Node reverse(Node head) {Node pre = null;Node next = null;while (head!=null) {next = head.next;head.next = pre;pre = head;head = next;}return pre;}public void prinf(Node head) {Node node = head;while (node!=null) {System.out.println(node.data);node=node.next;}}public static void main(String[] args) {Node head = new Node(1);head.next = new Node(5);head.next.next = new Node(10);head.next.next.next = new Node(25);head.next.next.next.next = new Node(30);ReverseLink reverseLink = new ReverseLink();reverseLink.prinf(head);System.out.println("---------");Node pre = reverseLink.reverse(head);reverseLink.prinf(pre);}}
public class ReverseDLink {public static class Node {int data;Node previous;Node next;public Node(int data) {this.data = data;}}public Node reverse(Node head) {Node pre = null;Node next = null;while (head!=null) {next = head.next;head.next = pre;head.previous = next;pre = head;head = next;}return pre;}public void print(Node head) {Node node = head;while (node!=null) {System.out.println(node.data);node=node.next;}}public static void main(String[] args) {Node head = new Node(1);head.next = new Node(3);head.next.next = new Node(5);head.next.next.next = new Node(7);head.next.next.next.next = new Node(9);ReverseDLink reverseDLink = new ReverseDLink();reverseDLink.print(head);System.out.println("-----");Node pre = reverseDLink.reverse(head);reverseDLink.print(pre);}}
题目:
反转部分单链表
给定一个单链表的头节点head,以及两个整数from和to,在单链表上把from个节点到第to个节点这一部分进行反转
如:
1-2-3-4-5,from=2,to=4
调整:
1-4-3-2-5
public class ReversePart {public static class Node {int data;Node next;public Node(int data) {// TODO Auto-generated constructor stubthis.data = data;}}public Node reverse(Node head,int start,int end) {int len = 0;Node startNode = head;Node sPre = null;Node eNext = null;while (startNode!=null) {len++;sPre = len==start-1?startNode:sPre;eNext = len==end+1?startNode:eNext;startNode = startNode.next;}startNode = sPre==null?head:sPre.next;Node node = startNode.next;startNode.next = eNext;Node next = null;while (node!=eNext) {next = node.next;node.next = startNode;startNode = node;node = next;}if (sPre!=null) {sPre.next=startNode;return head;}return startNode;}public void prinf(Node head) {Node node = head;while (node!=null) {System.out.println(node.data);node=node.next;}}public static void main(String[] args) {Node head = new Node(1);head.next = new Node(3);head.next.next = new Node(5);head.next.next.next = new Node(7);head.next.next.next.next = new Node(9);ReversePart part = new ReversePart();part.prinf(head);System.out.println("------------");part.reverse(head, 2, 5);part.prinf(head);}}
题目:
判断一个链表是否为回文结构
public class Palindromel {public static class Node {int data;Node next;public Node(int data) {// TODO Auto-generated constructor stubthis.data = data;}}public boolean isPalindromel(Node head) {Stack<Node> stack = new Stack<>();Node node1 = head;while (head!=null) {stack.push(head);head = head.next;}while (!stack.isEmpty()) {Node node2 = stack.pop();if (node1.data!=node2.data) {return false;}node1=node1.next;}return true;}public static void main(String[] args) {Node head = new Node(1);head.next = new Node(2);head.next.next = new Node(2);head.next.next.next = new Node(1);Node head1 = new Node(1);head1.next = new Node(3);head1.next.next = new Node(2);head1.next.next.next = new Node(1);Palindromel palindromel = new Palindromel();System.out.println(palindromel.isPalindromel(head));System.out.println(palindromel.isPalindromel(head1));}}
阅读全文
0 0
- Java与算法(5)
- Java与算法(1)
- Java与算法(2)
- Java与算法(3)
- Java与算法(4)
- Java与算法(6)
- Java与算法(7)
- Java与算法(8)
- Java与算法(9)
- Java与算法(10)
- Java与算法(11)
- Java与算法(12)
- Java与算法(13)
- 数据结构与算法(5)---Java语言实现:选择排序
- FIFO与LRU 算法实现(java)
- 数据结构与算法分析(JAVA版)
- java算法心得与技巧(一)
- java数据结构与算法(一)
- Linux写时拷贝技术(copy-on-write)
- 操作系统大集合-那些消失的操作系统
- 路径压缩
- 优化iOS程序性能的25个方法
- 分点新技能+网络流
- Java与算法(5)
- 漫画说算法--动态规划算法一(绝对通俗易懂,非常棒)
- Android7.0中文文档(API)--- VideoView
- 【设计原则】面向对象编程的六大原则
- Eclipse导入其他Eclipse写的Android项目error:Activity cannot be resolved to a type
- 记一次线上centOS服务器,nginx的https配置
- strut2中文件的上传与下载
- robot framework selenium2library的一些基本操作介绍,含常见问题
- Python中的random模块