Skip to content

Commit 275876f

Browse files
authored
Merge pull request onlyliuxin#15 from weifei619/master
github
2 parents 554fec7 + 28b6b34 commit 275876f

File tree

7 files changed

+332
-0
lines changed

7 files changed

+332
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package GithubWork;
2+
3+
import java.util.Arrays;
4+
5+
public class ArrayList implements List {
6+
private int size = 0;
7+
private Object[] elementdata = new Object[100];
8+
9+
public void add(Object o) {
10+
if (elementdata.length <= size) {
11+
ensureCapacity(size + 1);
12+
}
13+
elementdata[size++] = o;
14+
}
15+
16+
private void ensureCapacity(int minCapacity) {
17+
int oldCapacity = elementdata.length;
18+
if (oldCapacity < minCapacity) {
19+
20+
int newCapacity = (int) (oldCapacity * 1.5);
21+
if (newCapacity < minCapacity)
22+
newCapacity = minCapacity;
23+
elementdata = Arrays.copyOf(elementdata, newCapacity);
24+
}
25+
}
26+
27+
public void add(int index, Object o) {
28+
if (index > size || index < 0) {
29+
throw new IndexOutOfBoundsException();
30+
31+
}
32+
33+
ensureCapacity(size + 1);
34+
System.arraycopy(elementdata, index, elementdata, index, size - index);
35+
elementdata[index] = o;
36+
size++;
37+
}
38+
39+
public Object get(int index) {
40+
RangeCheck(index);
41+
42+
return elementdata[index];
43+
}
44+
45+
public Object remove(int index) {
46+
RangeCheck(index);
47+
Object oldvalue = elementdata[index];
48+
int numMoved = size - index - 1;
49+
if (numMoved > 0)
50+
System.arraycopy(elementdata, index + 1, elementdata, index, numMoved);
51+
elementdata[--size] = null;
52+
return oldvalue;
53+
}
54+
55+
private void RangeCheck(int index) {
56+
if (index >= size)
57+
throw new IndexOutOfBoundsException();
58+
}
59+
60+
public int size() {
61+
int i;
62+
for (i = 0; i < elementdata.length; i++) {
63+
size++;
64+
if (null == elementdata[i]) {
65+
break;
66+
}
67+
68+
}
69+
return size;
70+
71+
}
72+
73+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package GithubWork;
2+
3+
import org.junit.Test;
4+
5+
public class JunitTest {
6+
@Test
7+
public void ArrayList(){
8+
ArrayList a=new ArrayList();
9+
a.add(1);
10+
a.add(2);
11+
a.add(3);
12+
a.add(4);
13+
a.get(2);
14+
15+
System.out.println(a);
16+
17+
18+
}
19+
@Test
20+
public void Queue(){
21+
Queue q=new Queue(4);
22+
q.enQueue(1);
23+
q.enQueue(2);
24+
q.enQueue(3);
25+
q.enQueue(4);
26+
27+
while(!q.isEmpty()){
28+
int i=(int) q.deQueue();
29+
System.out.println(i);
30+
}
31+
System.out.println(q.size());
32+
}
33+
@Test
34+
public void LinkedList(){
35+
LinkedList ls=new LinkedList();
36+
ls.add(1);
37+
ls.add(7);
38+
ls.add(3);
39+
ls.add(4, 5);
40+
ls.get(2);
41+
ls.addFirst(0);
42+
43+
ls.remove(3);
44+
System.out.println(ls);
45+
46+
}
47+
}
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package GithubWork;
2+
3+
import java.util.Iterator;
4+
5+
public class LinkedList implements List {
6+
7+
private Node head = null;// 头节点
8+
private int size = 0;
9+
private Node last = null;
10+
11+
/*
12+
* 向链表中插入数据 (non-Javadoc)
13+
*
14+
* @see GithubWork.List#add(java.lang.Object)
15+
*/
16+
public void add(Object o) {
17+
Node newNode = new Node(0);// 实例化一个节点
18+
if (head == null) {
19+
head = newNode;
20+
return;
21+
}
22+
Node tmp = head;
23+
while (tmp.next != null) {
24+
tmp = tmp.next;
25+
}
26+
tmp.next = newNode;
27+
size++;
28+
}
29+
30+
public void add(int index, Object o) {
31+
Node newNode = new Node(0);
32+
Node indexNode = head;
33+
int i = 0;
34+
while (i == index) {
35+
indexNode = indexNode.next;
36+
i++;
37+
}
38+
Node indexNextNode = indexNode.next;
39+
indexNode.next = newNode;
40+
newNode.pre = indexNode;
41+
newNode.next = indexNextNode;
42+
indexNextNode.pre = newNode;
43+
size++;
44+
}
45+
46+
public Object get(int index) {
47+
Node indexNode = head;
48+
int i = 0;
49+
while (i == index) {
50+
indexNode = indexNode.next;
51+
i++;
52+
}
53+
return indexNode;
54+
}
55+
56+
public Object remove(int index) {
57+
if (index < 1 || index > size()) {
58+
throw new IndexOutOfBoundsException();
59+
}
60+
if (index == 1) {
61+
head = head.next;
62+
return head;
63+
}
64+
int i = 1;
65+
Node preNode = head;
66+
Node curNode = preNode.next;
67+
while (curNode != null) {
68+
if (i == index) {
69+
preNode.next = curNode.next;
70+
71+
}
72+
preNode = curNode;
73+
curNode = curNode.next;
74+
i++;
75+
}
76+
return curNode;
77+
}
78+
79+
public int size() {
80+
return size;
81+
}
82+
83+
public void addFirst(Object o) {
84+
Node newNode = new Node(o);
85+
newNode.data = o;
86+
newNode.next = head;
87+
head.pre = newNode;
88+
head = newNode;
89+
size++;
90+
}
91+
92+
public void addLast(Object o) {
93+
Node newNode = new Node(o);
94+
newNode.data = o;
95+
96+
newNode.pre = last;
97+
last.next = newNode;
98+
last = newNode;
99+
size++;
100+
101+
}
102+
103+
public Object removeFirst() {
104+
Node ref = head;
105+
head = head.next;
106+
head.pre = null;
107+
size--;
108+
return ref;
109+
}
110+
111+
public Object removeLast() {
112+
Node rel = last;
113+
last = last.pre;
114+
last.next = null;
115+
size--;
116+
return rel;
117+
118+
}
119+
120+
public Iterator iterator() {
121+
122+
return null;
123+
}
124+
125+
private static class Node {
126+
Object data;// 节点内容
127+
Node next = null;// 头节点
128+
Node pre = null;
129+
130+
public Node(Object data) {
131+
this.data = data;
132+
}
133+
134+
}
135+
136+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package GithubWork;
2+
3+
public interface List {
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+
10+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package GithubWork;
2+
3+
public class Queue {
4+
private int maxSize;
5+
private Object[] array;//存放元素数组
6+
private int front;//前一个元素索引
7+
private int rear;//后一个元素索引
8+
private int items=0;//元素个数
9+
//构造对象并初始化
10+
public Queue(int s){
11+
maxSize=s;
12+
array=new Object[maxSize];
13+
front=0;
14+
rear=-1;
15+
16+
}
17+
public void enQueue(Object o){
18+
if(rear==maxSize-1){
19+
rear=-1;
20+
}
21+
array[++rear]=o;
22+
items++;
23+
24+
}
25+
26+
public Object deQueue(){
27+
Object temp =array[front++];
28+
if(front==maxSize){
29+
front=0;
30+
}
31+
items--;
32+
return temp;
33+
}
34+
35+
public boolean isEmpty(){
36+
37+
return items==0;
38+
}
39+
40+
public int size(){
41+
return array.length;
42+
}
43+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package GithubWork;
2+
3+
public class Stack {
4+
private ArrayList elementData = new ArrayList();
5+
6+
public void push(Object o){
7+
}
8+
9+
public Object pop(){
10+
return null;
11+
}
12+
13+
public Object peek(){
14+
return null;
15+
}
16+
public boolean isEmpty(){
17+
return false;
18+
}
19+
public int size(){
20+
return -1;
21+
}
22+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
http://blog.csdn.net/wifi619/article/details/57510982

0 commit comments

Comments
 (0)