国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現雙鏈表互相交換任意兩個節點的方法示例

Java實現雙鏈表互相交換任意兩個節點的方法示例

2021-02-03 11:19Dzwsss Java教程

這篇文章主要介紹了Java實現雙鏈表互相交換任意兩個節點的方法,簡單講述了雙鏈表的概念,并結合實例形式給出了java雙鏈表實現任意兩個節點交換的操作技巧,需要的朋友可以參考下

本文實例講述了Java實現雙鏈表互相交換任意兩個節點的方法。分享給大家供大家參考,具體如下:

概述:

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后繼結點。一般我們都構造雙向循環鏈表。

思路:

1、確定兩個節點的先后順序
2、next、prev互相交換順序以及將換向前方的節點與之前的節點對接。(1.prev.next = 2)
3、判斷是否相鄰

實現代碼:

鏈表類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
public class SLink {
  public SNode head;
  public SLink() {
    this.head = new SNode();
  }
  public boolean interChangeById(int id1,int id2) {
    SNode s = head;
    SNode node1 = null,node2 = null;
    int node1Count,node2Count;
    node1Count = node2Count = 0;
    if(id1 == id2) {
      return true;
    }
    /**
     * 向下遍歷
     */
    while (s.next != null) {
      s = s.next;
      node1Count ++ ;
      if(s.student.stuId == id1) {
        /**
         * 記錄節點1
         */
        node1 = s;
        break;
      }
    }
    s = head;
    while (s.next != null) {
      s = s.next;
      node2Count ++ ;
      if(s.student.stuId == id2) {
        /**
         * 記錄節點2
         */
        node2 = s;
        break;
      }
    }
    if(node1 != null && node2 != null) {
      SNode temp = new SNode();
      /**
       * node1在后
       */
      if(node1Count > node2Count) {
        temp.next = node1.next;
        temp.prev = node1.prev;
        /**
         * 記錄那個節點就先處理那個節點
         * 1、交換next
         * 2、交換prev
         * 3、設置之前節點的next(對接)
         */
        node1.next = node2.next;
        node1.prev = node2.prev;
        node2.prev.next = node1;
        if(node1.next.equals(node1)) {
          /**
           * 說明兩個節點相鄰
           */
          node1.next = node2;
          node2.next = temp.next;
          node2.prev = node1;
        }else {
          /**
           * 說明節點不相鄰
           */
          node2.next = temp.next;
          node2.prev = temp.prev;
          temp.prev.next = node2;
        }
      }else {
        /**
         * node1在前
         */
        temp.next = node2.next;
        temp.prev = node2.prev;
        node2.next = node1.next;
        node2.prev = node1.prev;
        node1.prev.next = node2;
        if(node2.next.equals(node2)) {
          node2.next = node1;
          node1.next = temp.next;
          node1.prev = node2;
        }else {
          node1.next = temp.next;
          node1.prev = temp.prev;
          temp.prev.next = node1;
        }
      }
      return true;
    }
    return false;
  }
  public void displayStudent() {
    SNode s = head;
    while (s.next != null) {
      s = s.next;
      System.out.println(s.student);
    }
  }
}

節點類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SNode {
  public Student student;
  public SNode next;
  public SNode prev;
  public SNode(Student student, SNode prev,SNode next) {
    this.student = student;
    this.next = next;
    this.prev = prev;
  }
  public SNode() {
    this.student = null;
    this.next = null;
    this.prev = null;
  }
}

Student類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Student {
  public int stuId;
  public String name;
  public int age;
  public String className;
  public Student(int stuId, String name, int age, String className) {
    this.stuId = stuId;
    this.name = name;
    this.age = age;
    this.className = className;
  }
  public int getStuId() {
    return stuId;
  }
  public void setStuId(int stuId) {
    this.stuId = stuId;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getClassName() {
    return className;
  }
  public void setClassName(String className) {
    this.className = className;
  }
  @Override
  public String toString() {
    return "Student{" +
        "stuId=" + stuId +
        ", name='" + name + '\'' +
        ", age=" + age +
        ", className='" + className + '\'' +
        '}';
  }
}

希望本文所述對大家java程序設計有所幫助。

原文鏈接:http://blog.csdn.net/u010369338/article/details/71640467

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美福利一区二区 | 国产精品久久久久久久久 | 午夜伦理影院 | 国产特级毛片aaaaaaa高清 | 成人a级片在线观看 | 亚洲一区中文字幕在线观看 | 色接久久 | 国产高清精品在线 | 婷婷久| 午夜电影福利 | 欧美一区永久视频免费观看 | 国产精品美女久久久久久久久久久 | 中文字幕在线观看av | 毛片免费电影 | 国产精品免费网址 | 成人在线一区二区三区 | 在线中文 | 综合久久av| 久久久久久国产精品高清 | 国产精品国产成人国产三级 | 亚洲天堂av在线 | 开心久久婷婷综合中文字幕 | 欧美激情二区 | 一区二区三区在线观看国产 | 国精产品99永久一区一区 | 国产精品国产三级国产aⅴ中文 | 自拍偷拍中文字幕 | 日韩视频在线一区 | 2018自拍偷拍 | 精品视频一区二区三区四区 | 亚洲国产视频网站 | 亚洲91| 日韩精品成人 | 中文字幕亚洲欧美日韩在线不卡 | 日韩欧美精品在线 | 国产精品初高中精品久久 | 亚洲福利网站 | 亚洲精品电影在线观看 | 国产精品一区在线观看 | 亚洲综合在线视频 | 亚洲国产精品99久久久久久久久 |