Skip to content

Commit 6f11820

Browse files
committed
第一周作业
1 parent ab07459 commit 6f11820

File tree

5 files changed

+325
-1
lines changed

5 files changed

+325
-1
lines changed
Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,86 @@
11
package task01;
22

3+
import java.util.Arrays;
4+
35
/**第一周作业
4-
* 自己实现一个
6+
* 自己实现一个 ArrayList
57
* Created by eurry on 2017/2/26.
68
*/
79
public class ArrayList {
10+
/**
11+
* ArrayList的长度
12+
*/
13+
private int size = 0;
14+
15+
private Object[] elementData = {};
16+
17+
public void add(Object o){
18+
elementData = Arrays.copyOf(elementData, size+1);
19+
elementData[size] = o;
20+
size++;
21+
}
22+
23+
public void add(int index, Object o){
24+
if(index < size){
25+
elementData = Arrays.copyOf(elementData, size+1);
26+
System.arraycopy(elementData, index, elementData, index+1, size-index);
27+
elementData[index] = o;
28+
size++;
29+
}else{
30+
elementData = Arrays.copyOf(elementData, index+1);
31+
elementData[index] = o;
32+
size = index+1;
33+
}
34+
}
35+
36+
public Object get(int index){
37+
if(index < size){
38+
return elementData[index];
39+
}else{
40+
throw new IndexOutOfBoundsException("导致对数组范围以外的数据的访问");
41+
}
42+
}
43+
44+
public Object remove(int index){
45+
if(index < size){
46+
Object re = elementData[index];
47+
System.arraycopy(elementData, index+1, elementData, index, size-index-1);
48+
elementData = Arrays.copyOf(elementData, size-1);
49+
size--;
50+
return re;
51+
}else{
52+
throw new IndexOutOfBoundsException("导致对数组范围以外的数据的访问");
53+
}
54+
}
55+
56+
public int size(){
57+
return size;
58+
}
59+
60+
public String toString(){
61+
String str = null;
62+
if(elementData.length > 0){
63+
str = "";
64+
for (Object anElementData : elementData) {
65+
str += anElementData.toString() + ",";
66+
}
67+
str = str.substring(0, str.length()-1);
68+
}
69+
return str;
70+
}
71+
72+
/**
73+
* 测试
74+
*/
75+
public static void main(String[] str){
76+
ArrayList list = new ArrayList();
77+
list.add("A");
78+
list.add("B");
79+
list.add(1, "C");
80+
list.add("D");
81+
Object d = list.get(3);
82+
Object dd = list.remove(3);
83+
System.out.println(list.size());
84+
System.out.println(list.toString());
85+
}
886
}
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
package task01;
2+
3+
import java.util.Arrays;
4+
5+
/**第一周作业
6+
* 自己实现一个 LinkedList
7+
* Created by eurry on 2017/2/26.
8+
*/
9+
public class LinkedList {
10+
11+
private int size = 0;
12+
private Node head=null;
13+
14+
public void add(Object o){
15+
if(size == 0){
16+
head = new Node(o);
17+
}else{
18+
Node next = head;
19+
while(next.next != null){
20+
next = next.next;
21+
}
22+
next.next = new Node(o);
23+
}
24+
size++;
25+
}
26+
27+
public void add(int index, Object o){
28+
if(index <= size){
29+
if(size == 0){
30+
add(o);
31+
}else{
32+
if(index==0){
33+
addFirst(o);
34+
}else if(index==size){
35+
add(o);
36+
}else{
37+
Node next = head;
38+
for(int i=0; i<size; i++){
39+
Node temp = next.next;
40+
if(i==index-1){
41+
next.next = new Node(o);
42+
next.next.next = temp;
43+
}
44+
next = next.next;
45+
}
46+
size++;
47+
}
48+
}
49+
}else{
50+
throw new IndexOutOfBoundsException("越界");
51+
}
52+
}
53+
54+
public void addFirst(Object o){
55+
Node newHead = new Node(o);
56+
newHead.next = head;
57+
head = newHead;
58+
size++;
59+
}
60+
61+
62+
public Object get(int index){
63+
Node ele = null;
64+
Node next = head;
65+
for(int i=0; i<size; i++){
66+
if(i == index)
67+
ele = next;
68+
next = next.next;
69+
}
70+
return ele.element;
71+
}
72+
73+
public Object remove(int index){
74+
if(index < size){
75+
Node re = null;
76+
if(index==0){
77+
re = head;
78+
head = head.next;
79+
}else{
80+
Node prev = null;
81+
Node next = head;
82+
for(int i=0; i<size; i++){
83+
if(i == index-1)
84+
prev = next;
85+
next = next.next;
86+
}
87+
re = prev.next;
88+
prev.next = prev.next.next;
89+
}
90+
size--;
91+
return re.element;
92+
}else{
93+
throw new IndexOutOfBoundsException("越界");
94+
}
95+
}
96+
97+
public Object removeFirst(){
98+
Object obj = head.element;
99+
head = head.next;
100+
size--;
101+
return obj;
102+
}
103+
104+
public Object removeLast(){
105+
Node prev = null;
106+
Node next = head;
107+
for(int i=0; i<size; i++){
108+
if(i == size-2)
109+
prev = next;
110+
next = next.next;
111+
}
112+
Object obj = prev.next.element;
113+
prev.next = null;
114+
size--;
115+
return obj;
116+
}
117+
118+
public int size(){
119+
return size;
120+
}
121+
122+
public String toString(){
123+
String str = "";
124+
if(size > 0){
125+
Node ele = null;
126+
Node next = head;
127+
for(int i=0; i<size; i++){
128+
str += next.element.toString() + ",";
129+
next = next.next;
130+
}
131+
str = str.substring(0, str.length()-1);
132+
}
133+
return str;
134+
}
135+
136+
/**
137+
* 静态内部类:节点
138+
*/
139+
private static class Node{
140+
Object element;
141+
Node next = null;
142+
Node(Object o){
143+
this.element = o;
144+
}
145+
}
146+
147+
/**
148+
* 测试
149+
*/
150+
public static void main(String[] strs){
151+
LinkedList list = new LinkedList();
152+
list.add("A");
153+
list.add("B");
154+
list.add(1, "C");
155+
list.add("D");
156+
Object d = list.get(3);
157+
Object dd = list.remove(3);
158+
System.out.println(list.size());
159+
System.out.println(list.toString());
160+
}
161+
162+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package task01;
2+
3+
/**
4+
* Created by eurry on 2017/2/26.
5+
*/
6+
public class Main {
7+
8+
public static void main(String[] strs){
9+
10+
}
11+
12+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package task01;
2+
3+
import java.util.Arrays;
4+
5+
/**第一周作业
6+
* 自己实现一个 队列
7+
* Created by eurry on 2017/2/26.
8+
*/
9+
public class Queue {
10+
11+
private int size=0;
12+
private Object[] elementData = {};
13+
14+
/**
15+
* 入队列
16+
*/
17+
public void enQueue(Object o){
18+
elementData = Arrays.copyOf(elementData, size+1);
19+
elementData[size] = o;
20+
size++;
21+
}
22+
23+
/**
24+
* 出队列
25+
*/
26+
public Object deQueue(){
27+
Object result = elementData[0];
28+
Object[] newData = new Object[size-1];
29+
System.arraycopy(elementData, 1, newData, 0,size-1);
30+
elementData = newData;
31+
size--;
32+
return result;
33+
}
34+
35+
public boolean isEmpty(){
36+
return size==0;
37+
}
38+
39+
public int size(){
40+
return size;
41+
}
42+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package task01;
2+
3+
/**第一周作业
4+
* 自己实现一个 栈
5+
* Created by eurry on 2017/2/26.
6+
*/
7+
public class Stack {
8+
9+
private ArrayList elementData= new ArrayList();
10+
11+
public void push(Object o){
12+
elementData.add(o);
13+
}
14+
15+
public Object pop(){
16+
return elementData.remove(elementData.size()-1);
17+
}
18+
19+
/**
20+
*查看栈顶对象而不移除它
21+
*/
22+
public Object peek(){
23+
return elementData.get(elementData.size()-1);
24+
}
25+
26+
public boolean isEmpty(){
27+
return elementData.size()==0;
28+
}
29+
}
30+

0 commit comments

Comments
 (0)