Skip to content

Commit 4d1b8b5

Browse files
authored
Merge pull request onlyliuxin#7 from vvvandbb/master
add code 2-26
2 parents 0b7ce67 + 5ca4bf2 commit 4d1b8b5

File tree

7 files changed

+336
-0
lines changed

7 files changed

+336
-0
lines changed

group08/649859235/2-26/article.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
文章地址
2+
http://note.youdao.com/noteshare?id=a0345eff655b1cfc5877cc267452eed0&sub=FE5CD301B3C742269D04973B0DD2393C
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.vvv.base;
2+
3+
public class ArrayList implements IList {
4+
5+
private static final int DEFAULT_SIZE = 100;
6+
7+
private int size;
8+
private Object[] data = new Object[DEFAULT_SIZE];
9+
10+
@Override
11+
public void add(Object o) {
12+
if (size > data.length) {
13+
increase();
14+
}
15+
data[size] = o;
16+
size++;
17+
}
18+
19+
@Override
20+
public void add(int index, Object o) {
21+
check(index);
22+
23+
if (index > data.length - 1) {
24+
increase();
25+
}
26+
System.arraycopy(data, index, data, index + 1, size - index);
27+
data[index] = o;
28+
size++;
29+
}
30+
31+
private void check(int index) {
32+
if (index < 0 || index > size)
33+
throw new IndexOutOfBoundsException("index: " + index + ", size: "
34+
+ size);
35+
}
36+
37+
private void increase() {
38+
Object[] newData = new Object[DEFAULT_SIZE * 2];
39+
System.arraycopy(data, 0, newData, 0, size);
40+
data = newData;
41+
}
42+
43+
@Override
44+
public Object get(int index) {
45+
check(index);
46+
return data[index];
47+
}
48+
49+
@Override
50+
public Object remove(int index) {
51+
if (index > 0 && index < size) {
52+
Object d = data[index];
53+
int diff = size - index - 1;
54+
if (diff > 0)
55+
System.arraycopy(data, index + 1, data, index, size - index - 1);
56+
size--;
57+
data[size] = null;
58+
return d;
59+
}
60+
return null;
61+
}
62+
63+
@Override
64+
public int size() {
65+
return this.size;
66+
}
67+
68+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.vvv.base;
2+
3+
public class BinaryTreeNode {
4+
5+
private Object data;
6+
private BinaryTreeNode left;
7+
private BinaryTreeNode right;
8+
9+
public Object getData() {
10+
return data;
11+
}
12+
13+
public void setData(Object 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(Object o) {
34+
return null;
35+
}
36+
37+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.vvv.base;
2+
3+
public interface IList {
4+
public void add(Object o);
5+
public void add(int index, Object o);
6+
public Object get(int index);
7+
public Object remove(int index);
8+
public int size();
9+
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package com.vvv.base;
2+
3+
public class LinkedList implements IList {
4+
private int size;
5+
private Node<Object> head;
6+
private Node<Object> tail;
7+
8+
@Override
9+
public void add(Object o) {
10+
Node<Object> node = new Node<Object>(o);
11+
if (head == null) {
12+
head = node;
13+
tail = node;
14+
} else {
15+
tail.next = node;
16+
node.prev = tail;
17+
tail = node;
18+
}
19+
size++;
20+
}
21+
22+
@Override
23+
public void add(int index, Object o) {
24+
check(index);
25+
Node<Object> node = new Node<Object>(o);
26+
Node<Object> temp = head;
27+
for (int i = 0; i < index; i++) {
28+
temp = temp.next;
29+
}
30+
if (temp.prev != null && temp.next != null) {
31+
Node<Object> prevNode = temp.prev;
32+
prevNode.next = node;
33+
node.prev = prevNode;
34+
node.next = temp;
35+
temp.prev = node;
36+
} else if (temp.prev == null) {
37+
head = node;
38+
temp.prev = node;
39+
node.next = temp;
40+
} else if (temp.next == null) {
41+
temp.next = node;
42+
node.prev = temp;
43+
tail = node;
44+
}
45+
size++;
46+
}
47+
48+
@Override
49+
public Object get(int index) {
50+
check(index);
51+
Node<Object> temp = head;
52+
for (int i = 0; i < index; i++) {
53+
temp = temp.next;
54+
}
55+
return temp.data;
56+
}
57+
58+
@Override
59+
public Object remove(int index) {
60+
check(index);
61+
Node<Object> temp = head;
62+
for (int i = 0; i < index; i++) {
63+
temp = temp.next;
64+
}
65+
Object oldValue = temp.data;
66+
if (temp.prev != null && temp.next != null) {
67+
temp.prev.next = temp.next;
68+
temp.next.prev = temp.prev;
69+
temp = null;
70+
} else if (temp.prev == null) {
71+
head = temp.next;
72+
temp.next.prev = null;
73+
temp = null;
74+
} else if (temp.next == null) {
75+
tail = temp.prev;
76+
temp.prev.next = null;
77+
temp = null;
78+
}
79+
size--;
80+
return oldValue;
81+
}
82+
83+
public boolean remove(Object obj) {
84+
Node<Object> temp = head;
85+
for (int i = 0; i < size; i++) {
86+
if (obj.equals(temp.data)) {
87+
remove(i);
88+
return true;
89+
}
90+
temp = temp.next;
91+
}
92+
return false;
93+
}
94+
95+
private void check(int index) {
96+
if (index < 0 || index > size)
97+
throw new IndexOutOfBoundsException("index: " + index + ", size: "
98+
+ size);
99+
}
100+
101+
@Override
102+
public int size() {
103+
return size;
104+
}
105+
106+
@SuppressWarnings("hiding")
107+
private static class Node<Object> {
108+
Object data;
109+
Node<Object> next;
110+
Node<Object> prev;
111+
112+
public Node(Object data) {
113+
this.data = data;
114+
}
115+
}
116+
117+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.vvv.base;
2+
3+
public class Queue {
4+
5+
QueueNode head;
6+
QueueNode tail;
7+
private int size;
8+
9+
public Queue() {
10+
this.head = null;
11+
this.tail = null;
12+
}
13+
14+
public void enQueue(Object o) {
15+
if (head == null && tail == null) {
16+
tail = new QueueNode(o);
17+
head = tail;
18+
} else {
19+
QueueNode node = new QueueNode(o);
20+
tail.next = node;
21+
tail = tail.next;
22+
}
23+
size++;
24+
}
25+
26+
public Object deQueue() {
27+
if (head == null) {
28+
return null;
29+
}
30+
31+
if (head == tail && tail != null) {
32+
QueueNode node = head;
33+
tail = null;
34+
head = null;
35+
size--;
36+
return node.data;
37+
}
38+
39+
Object obj = head.data;
40+
head = head.next;
41+
size--;
42+
return obj;
43+
}
44+
45+
public boolean isEmpty() {
46+
if(head==null && tail == null)
47+
return true;
48+
return false;
49+
}
50+
51+
public int size() {
52+
return size;
53+
}
54+
55+
}
56+
57+
class QueueNode {
58+
Object data;
59+
QueueNode next;
60+
61+
public QueueNode() {
62+
this(null, null);
63+
}
64+
65+
public QueueNode(Object data) {
66+
this(data, null);
67+
}
68+
69+
public QueueNode(Object data, QueueNode next) {
70+
this.data = data;
71+
this.next = next;
72+
}
73+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.vvv.base;
2+
3+
public class Stack {
4+
private ArrayList data = new ArrayList();
5+
6+
public void push(Object o) {
7+
data.add(o);
8+
}
9+
10+
public Object pop() {
11+
return data.remove(data.size() - 1);
12+
}
13+
14+
public Object peek() {
15+
if (data.size() > 0) {
16+
return data.get(data.size() - 1);
17+
}
18+
return null;
19+
}
20+
21+
public boolean isEmpty() {
22+
if (data.size() > 0)
23+
return false;
24+
return true;
25+
}
26+
27+
public int size() {
28+
return data.size();
29+
}
30+
}

0 commit comments

Comments
 (0)