ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

问题:L0 L1 L2 L3 Ln--->L0 Ln L1 Ln-1...

2021-01-31 09:34:15  阅读:296  来源: 互联网

标签:Node Ln current L0 L1 指针


  1 import java.util.Scanner;
  2 
  3 /**
  4  * @name: Node
  5  * @description: 问题:L0 L1 L2 L3  Ln--->L0 Ln L1 Ln-1...
  6  * 思路:1.定义指向头的恒定指针headFianl,头指针head 当前指针current,当前指针的前一指针currentP
  7  *      2.将每轮寻得的最后一个元素放头指针head后面
  8  *      3.将头指针head和当前指针current往后一动一次
  9  *      4.重复2-3,直到当前指针current无下一个节点
 10  * 
 11  * @version: v1.0
 12  * @create: 2021-01-30 10:41
 13  **/
 14 
 15 public class NodeTest {
 16     /**单链表形式*/
 17 //    public static void main(String[] args) {
 18 //        Scanner scanner = new Scanner(System.in);
 19 //        System.out.println("Input the number of nodes");
 20 //        int nodesNum = scanner.nextInt();
 21 //        Node[] nodes = new Node[nodesNum];
 22 //        for(int i=0;i<nodesNum;i++) {
 23 //            nodes[i] = new Node();
 24 //        }
 25 //        System.out.println("Input the values of  nodes");
 26 //        for(int i=0;i<nodesNum;i++){
 27 //            nodes[i].value = scanner.nextInt();
 28 //            if(i != nodesNum - 1){
 29 //                nodes[i].right = nodes[i + 1];
 30 //            }
 31 //            System.out.println(nodes[i].toString() + ":" +nodes[i].value);
 32 //        }
 33 //        System.out.println("nodes initial ok");
 34 //
 35 //        Node headFianl = nodes[0];
 36 //        Node head = nodes[0];
 37 //        Node current = head;
 38 //        Node currentP = null;
 39 //        while (current.right != null) {
 40 //            while (current.right != null) {
 41 //                currentP = current;
 42 //                current = current.right;
 43 //            }
 44 //            currentP.right = null;
 45 //            Node tail = current;
 46 //            tail.right = head.right;//重新赋值
 47 //            head.right = tail;
 48 //
 49 //            current = current.right;
 50 //            head = current;
 51 //            if(current == null){
 52 //                break;
 53 //            }
 54 //        }
 55 //
 56 //        System.out.println("output");
 57 //        for(int i=0;i<nodesNum;i++){
 58 //            System.out.println(headFianl.toString() + ":" +headFianl.value);
 59 //            headFianl = headFianl.right;
 60 //        }
 61 //        System.out.println("ok");
 62 //    }
 63 
 64     /**双向链表形式*/
 65     public static void main(String[] args) {
 66         Scanner scanner = new Scanner(System.in);
 67         System.out.println("Input the number of nodes");
 68         int nodesNum = scanner.nextInt();
 69         Node[] nodes = new Node[nodesNum];
 70         for(int i=0;i<nodesNum;i++) {
 71             nodes[i] = new Node();
 72         }
 73         System.out.println("Input the values of  nodes");
 74         for(int i=0;i<nodesNum;i++){
 75             nodes[i].value = scanner.nextInt();
 76             if(i != nodesNum - 1){
 77                 nodes[i].right = nodes[i + 1];
 78                 nodes[i + 1].left = nodes[i];
 79             }
 80             System.out.println(nodes[i].toString() + ":" +nodes[i].value);
 81         }
 82         System.out.println("nodes initial ok");
 83 
 84         Node headFianl = nodes[0];
 85         Node head = nodes[0];
 86         Node current = head;
 87         while (current.right != null) {
 88             while (current.right != null) {
 89                 current = current.right;
 90             }
 91 
 92             current.left.right=null;
 93             Node tail = current;
 94             tail.right = head.right;//重新赋值
 95             if(head.right == null){
 96                 tail.right = head;
 97                 tail.left = head.left;
 98                 tail.left.right = tail;
 99                 head.left = tail;
100                 break;
101             }
102             head.right.left = tail;
103             tail.left = head;
104             head.right = tail;
105 
106             current = current.right;
107             head = current;
108             if(current == null){
109                 break;
110             }
111         }
112 
113         System.out.println("output");
114         for(int i=0;i<nodesNum;i++){
115             System.out.println(headFianl.toString() + ":" +headFianl.value);
116             headFianl = headFianl.right;
117         }
118         System.out.println("ok");
119     }
120 
121     static class Node{
122         Node left;
123         Node right;
124         Object value;
125     }
126 }

 

标签:Node,Ln,current,L0,L1,指针
来源: https://www.cnblogs.com/Sunlinux0523/p/14351589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有