服务器连成局域网(华为od机考题)

一、题目

1.原题

在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1 表示单元格上有服务器,0 表示没有。
如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。
请你统计机房中最大的局域网包含的服务器个数。

二、思路与代码过程

1.思路

输入n和m的大小,然后输入全是0和1的整数矩阵。

找到所有1的位置存入list,比较所有节点位置确认相邻关系(fX,bX,uY,dY),存入LinkedXY链表中,(xstack和ystack没啥实际作用,只是思维过程中的一个思路,可以删掉)。

把LinkedXY中的所有点遍历放入LinkNodejoin函数中,每一个节点都向四周查找能抵达的最多节点数,最后全部遍历完返回最大值。

LinkNodejoin函数中,每一次循环countStack都会刷新传入,在内循环中继承,每个节点都会对其相邻节点进行递归查找,直到达到LinkedXY的最后一个节点(结束条件存在问题,需要优化)。

2.代码过程

①main函数

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n和m的大小:");
        int n = sc.nextInt();
        int m = sc.nextInt();
        System.out.println("请依次输入矩阵网格的值:");
        int[][] matrix = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                matrix[i][j] = sc.nextInt();
            }
        }
        SearchMax(matrix,n,m);
    }

②SearchMax函数

private static void SearchMax(int[][] matrix, int n, int m) {
        Stack<int[]> xstack = new Stack<>();//
        Stack<int[]> ystack = new Stack<>();//
        ArrayList<int []> list = new ArrayList<>();
        ArrayList<LinkNode> LinkedXY = new ArrayList<>();//=============
        //把所有有服务器的位置都找到,存入list
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (matrix[i][j] == 1) {
                    list.add(new int[]{i, j});
                }
            }
        }
        if (list.size()==0) {
            System.out.println("当前矩阵无服务器。");
        }
        //System.out.println(Arrays.deepToString(list.toArray()));
        //无遗漏比较01 02 03 12 13 23
        LinkNode xnode1 = null;
        LinkNode xnode2 = null;
        LinkNode ynode1 = null;
        LinkNode ynode2 = null;
        for (int i = 0; i < list.size(); i++) {
            for (int j = i+1; j < list.size(); j++) {
                xnode1 = new LinkNode(list.get(i)[0],list.get(i)[1]);
                xnode2 = new LinkNode(list.get(j)[0],list.get(j)[1]);
                ynode1 = new LinkNode(list.get(i)[0],list.get(i)[1]);
                ynode2 = new LinkNode(list.get(j)[0],list.get(j)[1]);

                if (list.get(i)[0] == list.get(j)[0]&&Math.abs(list.get(i)[1]-list.get(j)[1])==1) {
            
                    boolean exist1 = false;
                    boolean exist2 = false;
                    for ( LinkNode currentNode : LinkedXY) {
                        if (currentNode.getX()==xnode1.getX() && currentNode.getY()==xnode1.getY()){
                            exist1 = true;
                            xnode1=currentNode;
                        }
                        if (currentNode.getX()==xnode2.getX() && currentNode.getY()==xnode2.getY()){
                            exist2 = true;
                            xnode2=currentNode;
                            break;
                        }
                    }
                    if (!exist1) {
                        LinkedXY.add(xnode1);
                    }
                    if (!exist2) {
                        LinkedXY.add(xnode2);
                    }
                    //有相邻入栈
                    xstack.push(list.get(i));
                    //若xnode1横坐标与xnode2相等,纵坐标小于xnode2,则将xnode2设为xnode1的后方
                    //setbXlink
                    if(list.get(i)[1]<list.get(j)[1]) {
                        xnode1.setbXlink(xnode2);
                        xnode2.setfXlink(xnode1);
                    }
                    //若xnode1横坐标与xnode2相等,纵坐标大于xnode2,则将xnode2设为xnode1的前方
                    //setfXlink
                    else if(list.get(i)[1]>list.get(j)[1]) {
                        xnode1.setfXlink(xnode2);
                        xnode2.setbXlink(xnode1);
                    }
                    //将相邻数入栈
                    xstack.push(list.get(j));
                } else if (list.get(i)[1] == list.get(j)[1]&&Math.abs(list.get(i)[0]-list.get(j)[0])==1) {
                    
                    boolean exist1 = false;
                    boolean exist2 = false;
                    for ( LinkNode currentNode : LinkedXY) {
                        if (currentNode.getX()==ynode1.getX() && currentNode.getY()==ynode1.getY()){
                            exist1 = true;
                            ynode1=currentNode;
                        }
                        if (currentNode.getX()==ynode2.getX() && currentNode.getY()==ynode2.getY()){
                            exist2 = true;
                            ynode2=currentNode;
                            break;
                        }
                    }
                    if (!exist1) {
                        LinkedXY.add(ynode1);
                    }
                    if (!exist2) {
                        LinkedXY.add(ynode2);
                    }
                    //有相邻入栈
                    ystack.push(list.get(i));
                    //若xnode1纵坐标与xnode2相等,横坐标大于xnode2,则将xnode2设为xnode1的上方
                    //setuYlink
                    if(list.get(i)[0]>list.get(j)[0]) {
                        ynode1.setuYlink(ynode2);
                    }
                    //若xnode1纵坐标与xnode2相等,横坐标小于xnode2,则将xnode2设为xnode1的下方
                    //setdYlink
                    else if(list.get(i)[0]<list.get(j)[0]) {
                        ynode1.setdYlink(ynode2);
                    }
                    //将相邻数入栈
                    ystack.push(list.get(j));
                }
            }
        }
        if (xstack.isEmpty()&& ystack.isEmpty()){
            System.out.println("无相邻服务器,最大局域网含1个服务器。");
        }
        int MaxSize = 0 ;
        for (int i = 0; i < LinkedXY.size(); i++) {
            Stack<LinkNode> countStack = new Stack<>();
            LinkNodejoin(LinkedXY,LinkedXY.get(i),countStack);
            MaxSize = Math.max(MaxSize,LinkNodejoin(LinkedXY,LinkedXY.get(i), countStack));
        }
        System.out.println("最大长度为:"+MaxSize);
    }

③ LinkNodejoin函数

private static int LinkNodejoin(ArrayList<LinkNode> LinkedXY,LinkNode CountcurrentNode, Stack<LinkNode> countStack) {
        //当前countStack不含有之前已经存入的节点
        if (!countStack.contains(CountcurrentNode)){
            System.out.println("当前countStack不含有该节点,加入进来啦!");
            countStack.push(CountcurrentNode);
        }
        if (CountcurrentNode==LinkedXY.get(LinkedXY.size()-1)){
            return countStack.size();
        }
            if (CountcurrentNode.fxlink!=null&&!countStack.contains(CountcurrentNode.fxlink)){
                LinkNodejoin(LinkedXY, CountcurrentNode.getfXlink(),countStack);
            }
            if (CountcurrentNode.bxlink!=null&&!countStack.contains(CountcurrentNode.bxlink)){
                LinkNodejoin(LinkedXY, CountcurrentNode.getbXlink(),countStack);
            }
            if (CountcurrentNode.uylink!=null&&!countStack.contains(CountcurrentNode.uylink)){
                LinkNodejoin(LinkedXY, CountcurrentNode.getuYlink(),countStack);
            }
            if (CountcurrentNode.dylink!=null&&!countStack.contains(CountcurrentNode.dylink)){
                LinkNodejoin(LinkedXY, CountcurrentNode.getdYlink(),countStack);
            }
            return countStack.size();
    }

④LinkNode类

public static class LinkNode{
        int x;
        int y;
        LinkNode fxlink;//前
        LinkNode bxlink;//后
        LinkNode uylink;//上
        LinkNode dylink;//下
        //构造函数
        public LinkNode (int x, int y) {
            this.x = x;
            this.y = y;
            this.fxlink = null;
            this.bxlink = null;
            this.uylink = null;
            this.dylink = null;

        }
        //方法体
        //获得x坐标
        public int getX() {
            return x;
        }
        //设置x坐标//无用
        public void setX(int x) {
            this.x = x;
        }
        //获得y坐标
        public int getY() {
            return y;
        }
        //设置y坐标//无用
        public void setY(int y) {
            this.y = y;
        }
        //获取横f向链接
        public LinkNode getfXlink() {
            return fxlink;
        }
        //设置横f向链接
        public void setfXlink(LinkNode fxlink) {
            this.fxlink = fxlink;
        }
        //获取横b向链接
        public LinkNode getbXlink() {
            return bxlink;
        }
        //设置横b向链接
        public void setbXlink(LinkNode bxlink) {
            this.bxlink = bxlink;
        }

        //获取纵u向链接
        public LinkNode getuYlink() {
            return uylink;
        }
        //设置纵u向链接
        public void setuYlink(LinkNode uylink) {
            this.uylink = uylink;
        }
        //获取纵d向链接
        public LinkNode getdYlink() {
            return dylink;
        }
        //设置纵d向链接
        public void setdYlink(LinkNode dylink) {
            this.dylink = dylink;
        }

        //获得横f向链接坐标(返回string)
        public String getfXlinkCoordinates(){
            if (fxlink != null) {
                return "横前向链接的坐标:("+fxlink.getX()+","+fxlink.getY();
            } else {
                return "无横前向链接";
            }
        }
        //获得横b向链接坐标
        public String getbXlinkCoordinates(){
            if (bxlink != null) {
                return "横后向链接的坐标:("+bxlink.getX()+","+bxlink.getY();
            } else {
                return "无横后向链接";
            }
        }
        //获得纵u向链接坐标
        public String getuYlinkCoordinates(){
            if (uylink != null) {
                return "纵上向链接的坐标:("+uylink.getX()+","+uylink.getY();
            }else {
                return "无纵上向链接";
            }
        }
        //获得纵d向链接坐标
        public String getdYlinkCoordinates(){
            if (uylink != null) {
                return "纵下向链接的坐标:("+dylink.getX()+","+dylink.getY();
            }else {
                return "无纵下向链接";
            }
        }
        //自定义输出形式
        public String toString(){
            return "LinkNode{坐标=(" + x + ", " + y + ")" +
                    ", 横前向链接=" + (fxlink != null ? "(" + fxlink.x + ", " + fxlink.y + ")" : "null") +
                    ", 横后向链接=" + (bxlink != null ? "(" + bxlink.x + ", " + bxlink.y + ")" : "null") +
                    ", 纵上向链接=" + (uylink != null ? "(" + uylink.x + ", " + uylink.y + ")" : "null") +
                    ", 纵下向链接=" + (dylink != null ? "(" + dylink.x + ", " + dylink.y + ")" : "null") + "}\n";
        }
    }

三、运行结果

1.运行截图


2.带数据分析运行结果

[0,0]:0 [0,1]:1 [0,2]:1 [0,3]:0 
[1,0]:1 [1,1]:1 [1,2]:1 [1,3]:0 
[2,0]:1 [2,1]:1 [2,2]:0 [2,3]:0 
[3,0]:1 [3,1]:0 [3,2]:1 [3,3]:1 
[LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}
, LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}
, LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}
, LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}
, LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}
, LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}
, LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}
, LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}
, LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}
, LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}
]
LinkNodejoin:LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

uy:null
dy:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前CountcurrentNode为LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

LinkNodejoin:LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

bx:null
uy:null
dy:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkNodejoin:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

bx:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkNodejoin:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

uy:null
dy:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前CountcurrentNode为LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

fx:null
bx:LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

uy:null
dy:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前CountcurrentNode为LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

bx:null
uy:null
dy:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

LinkNodejoin:LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

uy:null
dy:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前CountcurrentNode为LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkNodejoin:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

bx:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkNodejoin:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

uy:null
dy:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前CountcurrentNode为LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

fx:LinkNode{坐标=(0, 1), 横前向链接=null, 横后向链接=(0, 2), 纵上向链接=null, 纵下向链接=(1, 1)}

bx:null
uy:null
dy:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(0, 2), 横前向链接=(0, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=(1, 2)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

bx:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkNodejoin:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

uy:null
dy:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前CountcurrentNode为LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

fx:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

bx:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkNodejoin:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

bx:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkNodejoin:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

uy:null
dy:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前CountcurrentNode为LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

fx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

uy:null
dy:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前CountcurrentNode为LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkNodejoin:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

bx:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(1, 2), 横前向链接=(1, 1), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

fx:null
bx:LinkNode{坐标=(1, 1), 横前向链接=(1, 0), 横后向链接=(1, 2), 纵上向链接=null, 纵下向链接=(2, 1)}

uy:null
dy:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前CountcurrentNode为LinkNode{坐标=(1, 0), 横前向链接=null, 横后向链接=(1, 1), 纵上向链接=null, 纵下向链接=(2, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
fxlinkLinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkNodejoin:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前CountcurrentNode为LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
dylinkLinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

fx:LinkNode{坐标=(2, 0), 横前向链接=null, 横后向链接=(2, 1), 纵上向链接=null, 纵下向链接=(3, 0)}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(2, 1), 横前向链接=(2, 0), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

fx:null
bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 0), 横前向链接=null, 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:null
bx:LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
bxlinkLinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

fx:null
bx:LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

1---------------------------------------
LinkNodejoin:LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

当前countStack不含有该节点,加入进来啦!
fx:LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkNodejoin:LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

fx:LinkNode{坐标=(3, 2), 横前向链接=null, 横后向链接=(3, 3), 纵上向链接=null, 纵下向链接=null}

bx:null
uy:null
dy:null
当前CountcurrentNode为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

LinkedXY的最后一个为LinkNode{坐标=(3, 3), 横前向链接=(3, 2), 横后向链接=null, 纵上向链接=null, 纵下向链接=null}

最大长度为:8
 

3.带数据分析完整代码

import javax.naming.directory.SearchControls;
import java.util.*;

public class test25 {
    public static void main(String[] args) {
        // /*
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n和m的大小:");
        int n = sc.nextInt();
        int m = sc.nextInt();
        System.out.println("请依次输入矩阵网格的值:");
        int[][] matrix = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                matrix[i][j] = sc.nextInt();
            }
        }
        //*/
        /*
        简单测试:
        int n = 3;
        int m = 2;
        int[][] matrix = {{0,1},{1,0},{1,1}};
        //int[][] matrix = {{0,1},{1,0},{0,1}};//无相邻
        */
        //复杂测试:
        /*
        int n = 4;
        int m = 4;
        int[][] matrix = {{0,1,1,0},//00 01 02 03
                {1,1,1,0},//10 11 12 13
                {1,1,0,0},//20 21 22 23
                {1,0,1,1}};//30 31 32 33

        */
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print( "["+i+","+j+"]:"+matrix[i][j]+" ");
            }
            System.out.println();
        }
        //System.out.println(Arrays.deepToString(matrix));


        SearchMax(matrix,n,m);

    }

    private static void SearchMax(int[][] matrix, int n, int m) {
        Stack<int[]> xstack = new Stack<>();//
        Stack<int[]> ystack = new Stack<>();//
        ArrayList<int []> list = new ArrayList<>();
        ArrayList<LinkNode> LinkedXY = new ArrayList<>();//=============
        //把所有有服务器的位置都找到,存入list
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (matrix[i][j] == 1) {
                    list.add(new int[]{i, j});
                }
            }
        }
        if (list.size()==0) {
            System.out.println("当前矩阵无服务器。");
        }
        //System.out.println(Arrays.deepToString(list.toArray()));
        //无遗漏比较01 02 03 12 13 23
        LinkNode xnode1 = null;
        LinkNode xnode2 = null;
        LinkNode ynode1 = null;
        LinkNode ynode2 = null;
        for (int i = 0; i < list.size(); i++) {
            for (int j = i+1; j < list.size(); j++) {
                //System.out.println("一 "+Arrays.toString(list.get(i)));
                //System.out.println("二 "+Arrays.toString(list.get(j))+"\n");

                xnode1 = new LinkNode(list.get(i)[0],list.get(i)[1]);
                xnode2 = new LinkNode(list.get(j)[0],list.get(j)[1]);
                ynode1 = new LinkNode(list.get(i)[0],list.get(i)[1]);
                ynode2 = new LinkNode(list.get(j)[0],list.get(j)[1]);

                if (list.get(i)[0] == list.get(j)[0]&&Math.abs(list.get(i)[1]-list.get(j)[1])==1) {
                    // /*
                    boolean exist1 = false;
                    boolean exist2 = false;
                    for ( LinkNode currentNode : LinkedXY) {
                        if (currentNode.getX()==xnode1.getX() && currentNode.getY()==xnode1.getY()){
                            exist1 = true;
                            xnode1=currentNode;
                        }
                        if (currentNode.getX()==xnode2.getX() && currentNode.getY()==xnode2.getY()){
                            exist2 = true;
                            xnode2=currentNode;
                            break;
                        }
                    }
                    if (!exist1) {
                        LinkedXY.add(xnode1);
                    }
                    if (!exist2) {
                        LinkedXY.add(xnode2);
                    }
                    // */
                    //有相邻入栈
                    xstack.push(list.get(i));
                    //System.out.println("横相邻的有:");
                    //System.out.println("三 "+list.get(i)[0]+"  "+list.get(i)[1]);
                    //System.out.println("四 "+list.get(j)[0]+"  "+list.get(j)[1]);

                    //若xnode1横坐标与xnode2相等,纵坐标小于xnode2,则将xnode2设为xnode1的后方
                    //setbXlink
                    if(list.get(i)[1]<list.get(j)[1]) {
                        xnode1.setbXlink(xnode2);
                        xnode2.setfXlink(xnode1);//?
                        //LinkedXY.add(xnode1);
                        //System.out.println(LinkedXY);
                    }
                    //若xnode1横坐标与xnode2相等,纵坐标大于xnode2,则将xnode2设为xnode1的前方
                    //setfXlink
                    else if(list.get(i)[1]>list.get(j)[1]) {
                        xnode1.setfXlink(xnode2);
                        xnode2.setbXlink(xnode1);
                        //LinkedXY.add(xnode1);
                        //System.out.println(LinkedXY);
                    }
                    //将相邻数入栈
                    xstack.push(list.get(j));
                } else if (list.get(i)[1] == list.get(j)[1]&&Math.abs(list.get(i)[0]-list.get(j)[0])==1) {
                    // /*
                    boolean exist1 = false;
                    boolean exist2 = false;
                    for ( LinkNode currentNode : LinkedXY) {
                        if (currentNode.getX()==ynode1.getX() && currentNode.getY()==ynode1.getY()){
                            exist1 = true;
                            ynode1=currentNode;
                        }
                        if (currentNode.getX()==ynode2.getX() && currentNode.getY()==ynode2.getY()){
                            exist2 = true;
                            ynode2=currentNode;
                            break;
                        }
                    }
                    if (!exist1) {
                        LinkedXY.add(ynode1);
                    }
                    if (!exist2) {
                        LinkedXY.add(ynode2);
                    }
                    // */
                    //有相邻入栈
                    ystack.push(list.get(i));
                    //System.out.println("纵相邻的有:");
                    //System.out.println("五 "+list.get(i)[0]+"  "+list.get(i)[1]);
                    //System.out.println("六 "+list.get(j)[0]+"  "+list.get(j)[1]);


                    //若xnode1纵坐标与xnode2相等,横坐标大于xnode2,则将xnode2设为xnode1的上方
                    //setuYlink
                    if(list.get(i)[0]>list.get(j)[0]) {
                        ynode1.setuYlink(ynode2);
                        //LinkedXY.add(ynode1);
                        //System.out.println(LinkedXY);
                    }
                    //若xnode1纵坐标与xnode2相等,横坐标小于xnode2,则将xnode2设为xnode1的下方
                    //setdYlink
                    else if(list.get(i)[0]<list.get(j)[0]) {
                        ynode1.setdYlink(ynode2);
                        //LinkedXY.add(ynode1);
                        //System.out.println(LinkedXY);
                    }
                    //将相邻数入栈
                    ystack.push(list.get(j));
                }
            }
        }
        if (xstack.isEmpty()&& ystack.isEmpty()){
            System.out.println("无相邻服务器,最大局域网含1个服务器。");
        }
        System.out.println(LinkedXY);
        int MaxSize = 0 ;
        for (int i = 0; i < LinkedXY.size(); i++) {
            Stack<LinkNode> countStack = new Stack<>();
            LinkNodejoin(LinkedXY,LinkedXY.get(i),countStack);
            MaxSize = Math.max(MaxSize,LinkNodejoin(LinkedXY,LinkedXY.get(i), countStack));
        }
        System.out.println("最大长度为:"+MaxSize);
    }

    private static int LinkNodejoin(ArrayList<LinkNode> LinkedXY,LinkNode CountcurrentNode, Stack<LinkNode> countStack) {
        //CountcurrentNode = LinkedXY.get(i);
        System.out.println("LinkNodejoin:"+CountcurrentNode);
        //当前countStack不含有之前已经存入的节点
        if (!countStack.contains(CountcurrentNode)){
            System.out.println("当前countStack不含有该节点,加入进来啦!");
            countStack.push(CountcurrentNode);
        }
            System.out.println("fx:"+CountcurrentNode.getfXlink());
            System.out.println("bx:"+CountcurrentNode.getbXlink());
            System.out.println("uy:"+CountcurrentNode.getuYlink());
            System.out.println("dy:"+CountcurrentNode.getdYlink());

            System.out.println("当前CountcurrentNode为"+CountcurrentNode);
            System.out.println("LinkedXY的最后一个为"+LinkedXY.get(LinkedXY.size()-1));
        if (CountcurrentNode==LinkedXY.get(LinkedXY.size()-1)){
            return countStack.size();
        }
        System.out.println("1---------------------------------------");
            if (CountcurrentNode.fxlink!=null&&!countStack.contains(CountcurrentNode.fxlink)){
                System.out.println("fxlink" +CountcurrentNode.fxlink);
                LinkNodejoin(LinkedXY, CountcurrentNode.getfXlink(),countStack);
            }
            if (CountcurrentNode.bxlink!=null&&!countStack.contains(CountcurrentNode.bxlink)){
                System.out.println("bxlink" +CountcurrentNode.bxlink);
                LinkNodejoin(LinkedXY, CountcurrentNode.getbXlink(),countStack);
            }
            if (CountcurrentNode.uylink!=null&&!countStack.contains(CountcurrentNode.uylink)){
                System.out.println("uylink" +CountcurrentNode.uylink);
                LinkNodejoin(LinkedXY, CountcurrentNode.getuYlink(),countStack);
            }
            if (CountcurrentNode.dylink!=null&&!countStack.contains(CountcurrentNode.dylink)){
                System.out.println("dylink" +CountcurrentNode.dylink);
                LinkNodejoin(LinkedXY, CountcurrentNode.getdYlink(),countStack);
            }
            //System.out.println("2---------------------------------------");
            //System.out.println("当前countStack大小为:"+countStack.size());
            return countStack.size();
    }

    public static class LinkNode{
        int x;
        int y;
        LinkNode fxlink;//前
        LinkNode bxlink;//后
        LinkNode uylink;//上
        LinkNode dylink;//下
        //构造函数
        public LinkNode (int x, int y) {
            this.x = x;
            this.y = y;
            this.fxlink = null;
            this.bxlink = null;
            this.uylink = null;
            this.dylink = null;

        }
        //方法体
        //获得x坐标
        public int getX() {
            return x;
        }
        //设置x坐标//无用
        public void setX(int x) {
            this.x = x;
        }
        //获得y坐标
        public int getY() {
            return y;
        }
        //设置y坐标//无用
        public void setY(int y) {
            this.y = y;
        }
        //获取横f向链接
        public LinkNode getfXlink() {
            return fxlink;
        }
        //设置横f向链接
        public void setfXlink(LinkNode fxlink) {
            this.fxlink = fxlink;
        }
        //获取横b向链接
        public LinkNode getbXlink() {
            return bxlink;
        }
        //设置横b向链接
        public void setbXlink(LinkNode bxlink) {
            this.bxlink = bxlink;
        }

        //获取纵u向链接
        public LinkNode getuYlink() {
            return uylink;
        }
        //设置纵u向链接
        public void setuYlink(LinkNode uylink) {
            this.uylink = uylink;
        }
        //获取纵d向链接
        public LinkNode getdYlink() {
            return dylink;
        }
        //设置纵d向链接
        public void setdYlink(LinkNode dylink) {
            this.dylink = dylink;
        }

        //获得横f向链接坐标(返回string)
        public String getfXlinkCoordinates(){
            if (fxlink != null) {
                return "横前向链接的坐标:("+fxlink.getX()+","+fxlink.getY();
            } else {
                return "无横前向链接";
            }
        }
        //获得横b向链接坐标
        public String getbXlinkCoordinates(){
            if (bxlink != null) {
                return "横后向链接的坐标:("+bxlink.getX()+","+bxlink.getY();
            } else {
                return "无横后向链接";
            }
        }
        //获得纵u向链接坐标
        public String getuYlinkCoordinates(){
            if (uylink != null) {
                return "纵上向链接的坐标:("+uylink.getX()+","+uylink.getY();
            }else {
                return "无纵上向链接";
            }
        }
        //获得纵d向链接坐标
        public String getdYlinkCoordinates(){
            if (uylink != null) {
                return "纵下向链接的坐标:("+dylink.getX()+","+dylink.getY();
            }else {
                return "无纵下向链接";
            }
        }
        //自定义输出形式
        public String toString(){
            return "LinkNode{坐标=(" + x + ", " + y + ")" +
                    ", 横前向链接=" + (fxlink != null ? "(" + fxlink.x + ", " + fxlink.y + ")" : "null") +
                    ", 横后向链接=" + (bxlink != null ? "(" + bxlink.x + ", " + bxlink.y + ")" : "null") +
                    ", 纵上向链接=" + (uylink != null ? "(" + uylink.x + ", " + uylink.y + ")" : "null") +
                    ", 纵下向链接=" + (dylink != null ? "(" + dylink.x + ", " + dylink.y + ")" : "null") + "}\n";
        }
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值