Skip to content

Commit bd10c5c

Browse files
Merge pull request onlyliuxin#7 from ESunShen/master
完成ArrayList,LinkedList,Stack,Queue
2 parents 12dbb04 + 5490818 commit bd10c5c

23 files changed

+631
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/bin/

group03/617187912/Learning02/.project

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>617187912Learning02</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
eclipse.preferences.version=1
2+
encoding/<project>=UTF-8
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.8
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11+
org.eclipse.jdt.core.compiler.source=1.8
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package com.coding.basic;
2+
3+
4+
import java.util.Arrays;
5+
import java.util.NoSuchElementException;
6+
7+
public class ArrayList implements List {
8+
9+
private int size = 0;
10+
11+
private Object[] elementData;
12+
13+
public ArrayList(){
14+
this(64);
15+
}
16+
17+
public ArrayList(int intSize) {
18+
elementData = new Object[intSize];
19+
}
20+
21+
public void add(Object o) {
22+
checkMaxSize();
23+
elementData[size] = o;
24+
size++;
25+
}
26+
27+
public void add(int index, Object o) {
28+
checkMaxSize();
29+
System.arraycopy(elementData, index, elementData, index + 1, size - index);
30+
elementData[index] = o;
31+
size++;
32+
}
33+
34+
private void checkIndexRange(int index) {
35+
if (index >= size || index < 0) {
36+
throw new IndexOutOfBoundsException("index超出数组界限�");
37+
}
38+
}
39+
40+
private void checkMaxSize() {
41+
if (size >= elementData.length) {
42+
elementData = Arrays.copyOf(elementData, elementData.length * 2);
43+
}
44+
}
45+
46+
public Object get(int index) {
47+
checkIndexRange(index);
48+
return elementData[index];
49+
}
50+
51+
public Object remove(int index) {
52+
Object o = get(index);
53+
if (index == size - 1) {
54+
elementData[index] = null;
55+
} else {
56+
System.arraycopy(elementData, index + 1, elementData, index, size - index);
57+
}
58+
size--;
59+
return o;
60+
}
61+
62+
public int size() {
63+
return size;
64+
}
65+
66+
public Iterator iterator() {
67+
return new MyIterator();
68+
}
69+
70+
private class MyIterator implements Iterator {
71+
72+
private int current = 0;
73+
74+
@Override
75+
public boolean hasNext() {
76+
return current != size;
77+
}
78+
79+
@Override
80+
public Object next() {
81+
if (current >= size) {
82+
throw new NoSuchElementException();
83+
}
84+
return elementData[current++];
85+
}
86+
}
87+
88+
public static void main(String[] args) {
89+
ArrayList arrayList = new ArrayList(5);
90+
arrayList.add(1);
91+
arrayList.add(2);
92+
arrayList.add(3);
93+
arrayList.add(4);
94+
arrayList.add(5);
95+
arrayList.add(6);
96+
System.out.println(arrayList.get(1));
97+
arrayList.add(1, 100);
98+
System.out.println(arrayList.get(1));
99+
System.out.println(arrayList.size);
100+
System.out.println(arrayList.remove(2));
101+
System.out.println(arrayList.get(2));
102+
103+
104+
ArrayList mixArraylist = new ArrayList(5);
105+
mixArraylist.add("String");
106+
mixArraylist.add(100);
107+
mixArraylist.add('f');
108+
mixArraylist.add(3.1f);
109+
mixArraylist.add(4L);
110+
System.out.println(mixArraylist.get(1));
111+
mixArraylist.add(1, 101);
112+
System.out.println(mixArraylist.get(1));
113+
System.out.println(mixArraylist.size);
114+
System.out.println(mixArraylist.remove(2));
115+
System.out.println(mixArraylist.get(2));
116+
}
117+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.coding.basic;
2+
3+
4+
public class BinaryTreeNode {
5+
6+
private Object data;
7+
private BinaryTreeNode left;
8+
private BinaryTreeNode right;
9+
10+
public Object getData() {
11+
return data;
12+
}
13+
public void setData(Object data) {
14+
this.data = data;
15+
}
16+
public BinaryTreeNode getLeft() {
17+
return left;
18+
}
19+
public void setLeft(BinaryTreeNode left) {
20+
this.left = left;
21+
}
22+
public BinaryTreeNode getRight() {
23+
return right;
24+
}
25+
public void setRight(BinaryTreeNode right) {
26+
this.right = right;
27+
}
28+
29+
public BinaryTreeNode insert(Object o){
30+
return null;
31+
}
32+
33+
}
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+
4+
public interface Iterator {
5+
public boolean hasNext();
6+
public Object next();
7+
8+
}
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
package com.coding.basic;
2+
3+
import java.util.NoSuchElementException;
4+
5+
public class LinkedList implements List {
6+
7+
private Node head;
8+
private int size;
9+
10+
public void add(Object o) {
11+
addLast(o);
12+
}
13+
14+
public void add(int index, Object o) {
15+
checkIndexRange(index);
16+
if (index == 0) {
17+
head = new Node(o, head);
18+
size++;
19+
} else {
20+
Node nd = getNode(index-1);
21+
nd.next = new Node(o, nd.next);
22+
size++;
23+
}
24+
}
25+
26+
public Object get(int index) {
27+
return getNode(index).data;
28+
}
29+
30+
private Node getNode(int index) {
31+
Node nd = head;
32+
for (int i = 0; i < index; i++) {
33+
nd = nd.next;
34+
}
35+
return nd;
36+
}
37+
38+
public Object remove(int index) {
39+
if (size == 0) {
40+
throw new NoSuchElementException();
41+
}
42+
checkIndexRange(index);
43+
if (index == 0) {
44+
Object o = head.data;
45+
head = head.next;
46+
size--;
47+
return o;
48+
} else {
49+
Node nd = getNode(index - 1);
50+
Object o = nd.next.data;
51+
nd.next = nd.next.next;
52+
size--;
53+
return o;
54+
}
55+
}
56+
57+
private void checkIndexRange(int index) {
58+
if (index > size || index < 0) {
59+
throw new IndexOutOfBoundsException("index超出数组界限?");
60+
}
61+
}
62+
63+
public int size() {
64+
return size;
65+
}
66+
67+
public void addFirst(Object o) {
68+
add(0, o);
69+
}
70+
71+
public void addLast(Object o) {
72+
if (size == 0) {
73+
addFirst(o);
74+
} else {
75+
add(size, o);
76+
}
77+
}
78+
79+
public Object removeFirst() {
80+
return remove(0);
81+
}
82+
83+
public Object removeLast() {
84+
return remove(size - 1);
85+
}
86+
87+
public Iterator iterator() {
88+
return new MyIterator();
89+
}
90+
91+
private class MyIterator implements Iterator {
92+
93+
public Node current = head;
94+
95+
@Override
96+
public boolean hasNext() {
97+
return current != null;
98+
}
99+
100+
@Override
101+
public Object next() {
102+
Object o = current.data;
103+
current = current.next;
104+
return o;
105+
}
106+
}
107+
108+
private static class Node {
109+
Object data;
110+
Node next;
111+
112+
public Node(Object data, Node next) {
113+
this.data = data;
114+
this.next = next;
115+
}
116+
}
117+
118+
public static void main(String[] args) {
119+
LinkedList list = new LinkedList();
120+
list.add(1);
121+
list.add(2);
122+
list.add(3);
123+
list.add(4);
124+
for (int i = 0; i < list.size; i++) {
125+
System.out.println(list.get(i));
126+
}
127+
System.out.println(list.get(2));
128+
list.add(2, 100);
129+
System.out.println(list.get(2));
130+
list.addFirst(10);
131+
System.out.println(list.get(2));
132+
list.addLast(100);
133+
System.out.println(list.remove(1));
134+
System.out.println(list.removeFirst());
135+
System.out.println(list.removeLast());
136+
}
137+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.coding.basic;
2+
3+
4+
public interface List {
5+
public void add(Object o);
6+
public void add(int index, Object o);
7+
public Object get(int index);
8+
public Object remove(int index);
9+
public int size();
10+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.coding.basic;
2+
3+
4+
public class Queue {
5+
private LinkedList linkedList = new LinkedList();
6+
7+
public void enQueue(Object o) {
8+
linkedList.add(o);
9+
}
10+
11+
public Object deQueue() {
12+
return linkedList.removeFirst();
13+
}
14+
15+
public boolean isEmpty() {
16+
return linkedList.size() ==0;
17+
}
18+
19+
public int size() {
20+
return linkedList.size();
21+
}
22+
public static void main(String[] args) {
23+
Queue que = new Queue();
24+
que.enQueue(10);
25+
que.enQueue(11);
26+
que.enQueue(12);
27+
System.out.println(que.deQueue());
28+
System.out.println(que.isEmpty());
29+
que.deQueue();
30+
que.deQueue();
31+
System.out.println(que.isEmpty());
32+
}
33+
}

0 commit comments

Comments
 (0)