一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - JAVA模擬新增順序表及單鏈表

JAVA模擬新增順序表及單鏈表

2020-07-09 11:34咔咔kk JAVA教程

這篇文章主要介紹了JAVA模擬新增順序表及單鏈表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

最近在回顧大學學的數據結構,這里給大家用java模擬順序表單鏈表的新增

1順序表新增

JAVA模擬新增順序表及單鏈表

?
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
/**
 * 順序表
 *
 * @author cjd
 *
 */
public class ArrayList {
  private Object[] elementData; // 底層是一個數組,目前還沒有確定長度
 
  private int size; // 不是數組分配了幾個空間,而是元素的個數
 
  public ArrayList() {
    this(4);
  }
 
  public ArrayList(int initialCapacity) {
    elementData = new Object[initialCapacity];
  }
 
  // 返回線性表的大小,即數據元素的個數。
  public int size() {
    return size;
  }
 
  // 返回線性表中序號為 i 的數據元素@Override
  public Object get(int i) {
    return elementData[i];
  }
 
  // 將數據元素 e 插入到線性表中 i 號位置
  public void add(int i, Object e) {
    // 擴容 elementData = Arrays.copyOf(elementData, elementData.length*2);
    if (size == elementData.length) {//數組滿了,就擴容
      Object[] elementDatanew = new Object[elementData.length * 2];//新創建一個新的數組,長度是舊數組2倍
      for (int j = 0; j < elementData.length; j++) {
        elementDatanew[j] = elementData[j];//將舊數組的數據拷貝到新數組
      }
      elementData = elementDatanew;//讓elementData指向新數組
    }
    
    //最后位后移
    for(int j=size;j>i;j--){
      elementData[j]=elementData[j-1];
    }
    
    // 給數組賦值
    elementData[i] = e;
    // 元素個數+1
    size++;
 
  }
 
  // 將數據元素 e 插入到線性表末尾
  public void add(Object e) {
    this.add(size,e);//最后位新增
    
 
  }
 
  
 
  public String toString() {
    if (size == 0) {
      return "[]";
    }
    StringBuilder stringBuilder = new StringBuilder("[");
    for (int i = 0; i < size; i++) {
      if (i == 0)
        stringBuilder.append("" + elementData[i]);
      else
        stringBuilder.append("," + elementData[i]);
    }
    stringBuilder.append("]");
    return stringBuilder.toString();
  }
 
}

測試mian

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class test {
  public static void main(String[] args) {
    ArrayList list=new ArrayList();
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    list.add(6);
    list.add(3,9);
    System.out.println("實現順序表新增"+list.toString());
  }
}

2單鏈表新增

JAVA模擬新增順序表及單鏈表

實體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Node {
  Object data;//要存儲的數據
  Node next;
  public Node(Object data, Node next) {
    super();
    this.data = data;
  }
  public Node() {
    super();
  }
  public Object getData() {
    return data;
  }
  public void setData(Object data) {
    this.data = data;
  }
  public Node getNext() {
    return next;
  }
  public void setNext(Node next) {
    this.next = next;
  }
}

方法

?
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
/**
   * 單鏈表表
   *
   * @author cjd
   *
   */
  public class SingleLinkedList {
    private Node head = new Node();//頭結點,不存儲數據,為了編程方便
    private int size;//一共有幾個結點
 
    
    // 表的大小,即數據元素的個數。
    public int size() {
      return size;
    }
 
    // 返回單鏈表中序號為 i 的數據元素
    public Object get(int i) {
      //遍歷結點
      Node p=head;//找到前一個結點,從head結點開始
      for(int j=0;j<i;j++){
        p=p.next;
      }
      
      return p.data;
    }
 
    // 將數據元素 e 插入到單鏈表中 i 號位置
    public void add(int i, Object e) {
      
      //遍歷結點
      Node p=head;//找到前一個結點,從head結點開始
      for(int j=0;j<i;j++){
        p=p.next;//移動指針到下一個結點
      }
      
      //新創建一個結點
      Node newNode = new Node();
      newNode.data=e;
      newNode.next=p.next;
      
      p.next=newNode;//指明新結點的直接后繼結點
      
      // 個數+1
      size++;
 
    }
 
    // 將數據元素 e 插入到單鏈表末尾
    public void add(Object e) {
      this.add(size,e);//最后位新增
    }
 
    
 
    public String toString() {
      if (size == 0) {
        return "[]";
      }
 
      Node p=head.next;//找到前一個結點,從head結點開始
      StringBuilder stringBuilder= new StringBuilder("[");
      for (int i = 0; i < size; i++) {
        if (i == 0)
          stringBuilder.append("" + p.data);
        else
          stringBuilder.append("," + p.data);
        
        //移動指針到下一個結點
        p=p.next;
      }
      stringBuilder.append("]");
      return stringBuilder.toString();
    }
 
  }

測試類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class test {
  public static void main(String[] args) {
  
    
    SingleLinkedList singlist=new SingleLinkedList();
    singlist.add(1);
    singlist.add(2);
    singlist.add(3);
    singlist.add(4);
    singlist.add(5);
    singlist.add(6);
    singlist.add(3,9);
    System.out.println("實現單鏈表新增"+singlist.toString());
    
    
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/hzcjd/p/12169156.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美性f| 久久亚洲精品AV无码四区 | 精品国产自在现线拍国语 | a毛片免费观看完整 | 91麻豆精品国产片在线观看 | 36美女厕所撒尿全过程 | 亚洲人成伊人成综合网久久 | 国产精品久久久久久久久久久久 | 国产精品露脸国语对白河北 | 亚洲日日做天天做日日谢 | 草草视频免费观看 | 久热在线这里只有精品7 | 校园全黄h全肉细节文 | 亚洲精品国产自在现线最新 | 亚洲福利视频一区 | 国产第7页 | 风间由美一区二区播放合集 | 日韩视频在线免费 | 91国内精品线免费播放 | 34看网片午夜理 | 五月桃花网婷婷亚洲综合 | 小妇人电影免费完整观看2021 | 亚洲人成网站在线观看青青 | 美女一线天| 免费亚洲成人 | 26uuu久久| futa巨大好爽好长 | 国产精品aⅴ | 日产乱码卡1卡2卡三卡四在线 | 午夜福利电影网站鲁片大全 | 亚洲国产成人精品不卡青青草原 | 国产caonila在线观看 | 国色天香社区在线视频播放 | 亚洲乱亚洲乱妇41p国产成人 | 丁香五香天堂网 | 日本高清免费观看 | 91热国内精品永久免费观看 | 变态 另类 人妖小说 | 久久理论片迅播影院一级 | 国产欧美一区二区三区免费看 | 欧美日韩亚毛片免费观看 |