【CS61B】Lec5-DLList

  • ~1.78K 字
  1. 1. DLList
    1. 1.1. DLList
    2. 1.2. Generic Lists
      1. 1.2.1. double:Double
      2. 1.2.2. Arrays
      3. 1.2.3. 固定整型长度
      4. 1.2.4. 初始化方法
      5. 1.2.5. 数组复制
      6. 1.2.6. 二维数组

DLList

DLList

为了让remove等操作更加高效,我们在SLList的基础上进行改进,变为双向链表,这样有利于提升操作效率

同时,对于头节点的操作,我们可以用两个头节点,但更好的方法是使用循环链表

具体实现详见Project1

Generic Lists

我们设计的SLList目前只接受int类型,通过修改可以实现接受各种类型

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
package lec5;

// 数字列表
public class GenericList<T> {
private class TNode {
public T item;
public TNode next;

public TNode(T i, TNode n){
item = i;
next = n;

}
}

//列表的第一项
private TNode sentinel;
private int size;

public GenericList(){
sentinel = new TNode(null, null);
size = 0;
}
public void addFirst(T x){
size++;
sentinel.next = new TNode(x, sentinel.next);
}

public T getFirst(){
return sentinel.next.item;
}

public void addLast(T x){
size++;
TNode p = sentinel;
while(p.next!=null){
p = p.next;
}
p.next = new TNode(x, null);
}

public int size(){
return size;
}

public static void main(String[] args){
GenericList<Integer> L = new GenericList<>();
L.addFirst(10);
L.addFirst(5);
L.addLast(20);
System.out.println(L.getFirst());
System.out.println(L.size());
}

}

泛型的规则如下:

  • .java文件中实现数据结构时,需要在文件开头设定泛型且只能设定一次

  • .java文件中使用数据结构时,设定需要的数据类型

    类名<引用类型> 实例名 = new 类名<>();

  • 声明和实例化时,需要使用引用类型

    • int:Integer

    • double:Double

    • char:Character

    • boolean:Boolean

    • long:Long

Arrays

数组是一种拥有指定长度内存的对象,组成如下:

  • 固定整型长度

  • N=length个内存空间

    • 所有内存空间有着相同数据类型
    • 索引从0到length-1

初始化方法

1
2
3
4
x = new int[3];
y = new int[]{1,2,3,4,5};

int[] z = {9, 10, 12, 13};

数组复制

  • 使用循环逐个复制
  • 使用System.arraycopy(),包括五个参数
    • 源数组
    • 源数组起始位置
    • 目标数组
    • 目标数组起始位置
    • 复制元素个数

二维数组

赞助喵
非常感谢您的喜欢!
赞助喵