数据结构

​ 最近在准备复习过程中也开始回顾大学期间所学的一些知识,决定从数组开始复现,以备以后复习查验。

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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package org.gjt.arr;

/**

- @author gjt
- @version 1.0
- @date 2019/3/8 20:40
- @Description 这里写描述内容
*/
public class Array {

​ private int[] data;

​ private int size;

​ /**

- 构造函数,传入数组容量构造Array
@param capacity
*/
public Array(int capacity) {
data = new int[capacity];
size = 0;
}

​ public void delete(int e) {
​ for (int i = 0; i < data.length; i++) {
​ if (data[i] == e) {
​ data[i] = data[i + 1];
​ }
​ }
​ }

​ /**

- 数组扩容
/
private void expansion() {
int[] data1 = new int[data.length + 4];
for (int i = 0; i < data.length; i++) {
data1[i] = data[i];
}
}

​ /**

- 默认构造数组容量大小=10
/
public Array() {
this(10);
}
/**
- 元素个数
/
public int getSize() {
return size;
}
/**
- 获取数组容量
/
public int getCapcity() {
return data.length;
}
/**
- 是否为空
/
public boolean isEmpty() {
return size == 0;
}

​ /**

- 新增一个数据
@param index 位置
- @param e 整数
/
public void add(int index, int e) {
if(size == data.length) {
expansion();
}
if(index < 0 || index > size) {
throw new IllegalArgumentException("非法索引值!");
}
for (int i = size - 1 ; i >= index ; i --) {
// 向后依次位移一个元素
data[i+1] = data[i];
}
data[index] = e;
size++;
}

​ /**

- 插入一条数据
@param e 数据
*/
public void add(int e) {
add(size, e);
}

​ /**

- 向尾部插入数据
@param e 数据
*/
public void addLast(int e) {
add(size, e);
}

​ /**

- 向头部插入数据
@param e 数据
*/
public void addFirst(int e) {
add(0, e);
}

​ /**

- 数组复制
@return
*/
public static void copyOf(int[] oldArr,int[] newArr) {
for (int i = 0; i < oldArr.length; i++) {
newArr[i] = oldArr[i];
}
}

}