Skip to content

Commit a5a273b

Browse files
authored
Merge pull request onlyliuxin#3 from zhanggao/master
first work
2 parents 07ddfc8 + 7ce0832 commit a5a273b

File tree

9 files changed

+430
-0
lines changed

9 files changed

+430
-0
lines changed

group14/254659936/.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
*.iml
2+
.gradle
3+
.idea
4+
/local.properties
5+
/.idea/workspace.xml
6+
/.idea/libraries
7+
.DS_Store
8+
/build
9+
/captures
10+
.externalNativeBuild

group14/254659936/src/Main.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
public class Main {
3+
4+
public static void main(String[] args) {
5+
System.out.println("Hello World!");
6+
}
7+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.coding.basic;
2+
3+
import java.util.Objects;
4+
5+
public class ArrayList implements List {
6+
7+
private int size = 0;
8+
9+
private Object[] elementData = new Object[5];
10+
11+
public void add(Object o) {
12+
if (size == elementData.length) {
13+
Object[] newArr = new Object[elementData.length * 2];
14+
System.arraycopy(newArr, 0, elementData, 0, elementData.length);
15+
elementData = newArr;
16+
}
17+
elementData[size] = o;
18+
size++;
19+
}
20+
21+
public void add(int index, Object o) {
22+
if (index >= size) {
23+
throw new RuntimeException("the ArrayList size is short than index");
24+
}
25+
elementData[index] = o;
26+
}
27+
28+
public Object get(int index) {
29+
if (index >= size) {
30+
throw new RuntimeException("the ArrayList size is short than index");
31+
}
32+
return elementData[index];
33+
}
34+
35+
public Object remove(int index) {
36+
if (index >= size) {
37+
throw new RuntimeException("the ArrayList size is short than index");
38+
}
39+
Object resultObj = elementData[index];
40+
size--;
41+
for (int i = index; i < size; i++) {
42+
elementData[index] = elementData[index + 1];
43+
}
44+
return resultObj;
45+
}
46+
47+
public int size() {
48+
return size;
49+
}
50+
51+
public Iterator iterator() {
52+
return null;
53+
}
54+
55+
private class ArrayIterator implements Iterator {
56+
57+
private int iteratorIndex = 0;
58+
59+
@Override
60+
public boolean hasNext() {
61+
return iteratorIndex < size;
62+
}
63+
64+
@Override
65+
public Object next() {
66+
if (iteratorIndex >= size) {
67+
throw new RuntimeException("the index is out of the list");
68+
}
69+
return elementData[iteratorIndex++];
70+
}
71+
}
72+
73+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.coding.basic;
2+
3+
public class BinaryTreeNode<T extends BinaryTreeNode.Compare> {
4+
5+
private T data;
6+
private BinaryTreeNode left;
7+
private BinaryTreeNode right;
8+
9+
public T getData() {
10+
return data;
11+
}
12+
13+
public void setData(T data) {
14+
this.data = data;
15+
}
16+
17+
public BinaryTreeNode getLeft() {
18+
return left;
19+
}
20+
21+
public void setLeft(BinaryTreeNode left) {
22+
this.left = left;
23+
}
24+
25+
public BinaryTreeNode getRight() {
26+
return right;
27+
}
28+
29+
public void setRight(BinaryTreeNode right) {
30+
this.right = right;
31+
}
32+
33+
public BinaryTreeNode insert(T o) {
34+
BinaryTreeNode node = new BinaryTreeNode();
35+
node.setData(o);
36+
insert(this, node);
37+
return node;
38+
}
39+
40+
private void insert(BinaryTreeNode parent, BinaryTreeNode child) {
41+
BinaryTreeNode node;
42+
if (child.getData().isLargeThanTarget(parent.getData())) {
43+
// 子节点比父节点大,需要向右插入
44+
node = getRight();
45+
if (null == node) {
46+
// 右节点为空则可以直接插入
47+
parent.setRight(node);
48+
} else {
49+
// 递归检查右边子树的插入位置
50+
insert(node, child);
51+
}
52+
} else {
53+
// 子节点比父节点小,或者等于父节点,需要向左插入
54+
node = getLeft();
55+
if (null == node) {
56+
// 左节点为空,则直接插入
57+
parent.setLeft(node);
58+
} else {
59+
// 递归检查左子树的插入位置
60+
insert(node, child);
61+
}
62+
}
63+
}
64+
65+
public interface Compare {
66+
boolean isLargeThanTarget(Compare target);
67+
}
68+
69+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.coding.basic;
2+
3+
public interface Iterator {
4+
public boolean hasNext();
5+
6+
public Object next();
7+
8+
}
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
package com.coding.basic;
2+
3+
public class LinkedList implements List {
4+
5+
private Node head;
6+
private int size = 0;
7+
8+
public void add(Object o) {
9+
addLast(o);
10+
}
11+
12+
public void add(int index, Object o) {
13+
if (index >= size) {
14+
throw new RuntimeException("the LinkedList size is short than index");
15+
}
16+
Node node = new Node();
17+
node.data = 0;
18+
if (index == 0) {
19+
node.next = head;
20+
head = node;
21+
}
22+
Node next = head;
23+
int i = 0;
24+
while (null != next) {
25+
i++;
26+
if (index == i) {
27+
node.next = next.next;
28+
next.next = node;
29+
break;
30+
}
31+
next.next = next.next;
32+
}
33+
size++;
34+
}
35+
36+
public Object get(int index) {
37+
if (index >= size) {
38+
throw new RuntimeException("the LinkedList size is short than index");
39+
}
40+
Node next = head;
41+
int i = 0;
42+
while (null != next) {
43+
if (i == index) {
44+
return next;
45+
}
46+
next = next.next;
47+
i++;
48+
}
49+
return null;
50+
}
51+
52+
public Object remove(int index) {
53+
if (index >= size) {
54+
throw new RuntimeException("the LinkedList size is short than index");
55+
}
56+
size--;
57+
Node resultNode = null;
58+
if (index == 0) {
59+
resultNode = head;
60+
head = head.next;
61+
return resultNode.data;
62+
}
63+
64+
Node next = head;
65+
int i = 0;
66+
while (null != next) {
67+
if (i == index) {
68+
resultNode = next.next;
69+
next.next = resultNode.next;
70+
}
71+
}
72+
return resultNode.data;
73+
}
74+
75+
public int size() {
76+
return size;
77+
}
78+
79+
public void addFirst(Object o) {
80+
size++;
81+
Node node = new Node();
82+
node.data = 0;
83+
node.next = head;
84+
head = node;
85+
}
86+
87+
public void addLast(Object o) {
88+
size++;
89+
Node node = new Node();
90+
node.data = o;
91+
if (null == head) {
92+
head = node;
93+
return;
94+
}
95+
Node next = head;
96+
while (null != next.next) {
97+
next = next.next;
98+
}
99+
next.next = node;
100+
}
101+
102+
public Object removeFirst() {
103+
if (size == 0) {
104+
throw new RuntimeException("the LinkedList is null");
105+
}
106+
size--;
107+
Object obj = head.data;
108+
head = head.next;
109+
return obj;
110+
}
111+
112+
public Object removeLast() {
113+
if (size == 0) {
114+
throw new RuntimeException("the LinkedList is null");
115+
}
116+
Node next = head;
117+
Object obj = null;
118+
for (int i = 0; i < size - 1; i++) {
119+
next = next.next;
120+
}
121+
next.next = null;
122+
size--;
123+
return obj;
124+
}
125+
126+
public Iterator iterator() {
127+
return null;
128+
}
129+
130+
131+
private static class Node {
132+
Object data;
133+
Node next;
134+
}
135+
136+
private class LinkedListIterator implements Iterator {
137+
138+
private Node next = head;
139+
140+
@Override
141+
public boolean hasNext() {
142+
return null != next;
143+
}
144+
145+
@Override
146+
public Object next() {
147+
if (null == next) {
148+
throw new RuntimeException("the LinkedList is out of index");
149+
}
150+
Object obj = next.data;
151+
next = next.next;
152+
return obj;
153+
}
154+
}
155+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.coding.basic;
2+
3+
public interface List {
4+
public void add(Object o);
5+
6+
public void add(int index, Object o);
7+
8+
public Object get(int index);
9+
10+
public Object remove(int index);
11+
12+
public int size();
13+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.coding.basic;
2+
3+
public class Queue {
4+
5+
private Node head;
6+
private Node tail;
7+
private int size;
8+
9+
public void enQueue(Object o) {
10+
Node node = new Node();
11+
node.data = o;
12+
if (null == head) {
13+
head = node;
14+
tail = node;
15+
} else {
16+
tail.next = node;
17+
tail = tail.next;
18+
}
19+
size++;
20+
}
21+
22+
public Object deQueue() {
23+
if (size <= 0) {
24+
throw new RuntimeException("the queue is empty");
25+
}
26+
Object obj = head.data;
27+
head = head.next;
28+
size--;
29+
return obj;
30+
}
31+
32+
public boolean isEmpty() {
33+
return size == 0;
34+
}
35+
36+
public int size() {
37+
return size;
38+
}
39+
40+
private static class Node {
41+
Object data;
42+
Node next;
43+
Node pre;
44+
}
45+
}

0 commit comments

Comments
 (0)