Skip to content

Commit f530c65

Browse files
committed
20170227_09:52
1 parent 54de242 commit f530c65

File tree

7 files changed

+341
-0
lines changed

7 files changed

+341
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package com.github.orajavac.coding2017.basic;
2+
3+
public class ArrayList implements List,Iterator{
4+
5+
private int size = 0;
6+
7+
private int i=0;
8+
9+
private Object[] elementData = new Object[2];
10+
11+
public void add(Object o){
12+
size=size();
13+
if (size == elementData.length)
14+
grow(elementData,size);
15+
elementData[size]=o;
16+
}
17+
public void add(int index, Object o){
18+
Object old=elementData[index]; //[3] old value=c
19+
size=size();
20+
size+=1;
21+
if (size>elementData.length)
22+
grow(elementData,size);
23+
Object temp = null;
24+
int len=elementData.length;
25+
for (int i=0;i<len;i++){
26+
if (i==index){
27+
elementData[index]=o;
28+
}else if(i>index){
29+
temp=elementData[i];
30+
elementData[i]=old; //[4]=c
31+
old=temp;
32+
}
33+
}
34+
}
35+
36+
public Object get(int index){
37+
return elementData[index];
38+
}
39+
40+
public Object remove(int index){
41+
if (index==elementData.length-1){ //删除最后一个索引元素里的值
42+
elementData[index]=null;
43+
}else{
44+
elementData[index]=null;
45+
int len=elementData.length;
46+
for (int i=0;i<len;i++){
47+
if (i==index){
48+
elementData[i]=elementData[i+1];
49+
}else if(i>index){
50+
if(i+1!=len){
51+
elementData[i]=elementData[i+1];
52+
}else{ //我们假设数组索引 0-3,那么数组长度是4,3+1==4,elementData[i+1]会报错
53+
elementData[i]=null;
54+
}
55+
}
56+
}
57+
}
58+
return null;
59+
}
60+
61+
public int size(){
62+
size=0;
63+
for (int i=0;i<elementData.length;i++){
64+
if (elementData[i]!=null){
65+
size++;
66+
}
67+
}
68+
return size;
69+
}
70+
71+
public void grow(Object[] elementData,int size){
72+
Object[] target = new Object[size+elementData.length];
73+
System.arraycopy(elementData, 0, target, 0, elementData.length);
74+
this.elementData=target;
75+
}
76+
77+
public Iterator iterator(){
78+
ArrayList l = new ArrayList();
79+
l.elementData=this.elementData;
80+
l.size=this.size();
81+
return l;
82+
}
83+
84+
85+
86+
public boolean hasNext(){
87+
if (i<=size-1){
88+
return true;
89+
}else{
90+
i=0;
91+
}
92+
return false;
93+
}
94+
95+
public Object next(){
96+
Object obj=elementData[i];
97+
i++;
98+
return obj;
99+
}
100+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.github.orajavac.coding2017.basic;
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+
public void setData(Object data) {
13+
this.data = data;
14+
}
15+
public BinaryTreeNode getLeft() {
16+
return left;
17+
}
18+
public void setLeft(BinaryTreeNode left) {
19+
this.left = left;
20+
}
21+
public BinaryTreeNode getRight() {
22+
return right;
23+
}
24+
public void setRight(BinaryTreeNode right) {
25+
this.right = right;
26+
}
27+
28+
public BinaryTreeNode insert(Object o){
29+
return null;
30+
}
31+
32+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.github.orajavac.coding2017.basic;
2+
3+
public interface Iterator {
4+
public boolean hasNext();
5+
public Object next();
6+
7+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package com.github.orajavac.coding2017.basic;
2+
3+
public class LinkedList implements List,Iterator {
4+
5+
private Node head;
6+
7+
private Node current;
8+
9+
private int size=0;
10+
11+
public void add(Object o){
12+
Node n = new Node();
13+
n.next=this.head;
14+
n.data=o;
15+
this.head=n;
16+
}
17+
public void add(int index , Object o){
18+
19+
}
20+
public Object get(int index){
21+
Node c = this.head;
22+
int i=0;
23+
while(c!=null){
24+
i++;
25+
if (index==i){
26+
return c.data;
27+
}
28+
c=c.next;
29+
}
30+
return null;
31+
}
32+
public Object remove(int index){
33+
return null;
34+
}
35+
36+
public int size(){
37+
size=0;
38+
Node c = this.head;
39+
while(c!=null){
40+
size++;
41+
c=c.next;
42+
}
43+
return size;
44+
}
45+
46+
public void addFirst(Object o){
47+
if (this.head==null){
48+
this.head = new Node();
49+
this.head.data=o;
50+
}
51+
}
52+
public void addLast(Object o){
53+
add(o);
54+
}
55+
public Object removeFirst(){
56+
int s=size();
57+
int index=0;
58+
Node c = this.head;
59+
while(c!=null){
60+
index=s--;
61+
if (index==2){
62+
System.out.println(c.next.data);
63+
64+
break;
65+
}
66+
c=c.next;
67+
}
68+
return null;
69+
}
70+
public Object removeLast(){
71+
Node e = this.head.next;
72+
this.head=null;
73+
this.head=e;
74+
return null;
75+
}
76+
77+
public void listNode(){
78+
Node c = this.head;
79+
while(c!=null){
80+
System.out.print(c.data+ " -> ");
81+
c=c.next;
82+
}
83+
System.out.println();
84+
}
85+
public Iterator iterator(){
86+
LinkedList l = new LinkedList();
87+
l.head=this.head;
88+
return l;
89+
}
90+
91+
public boolean hasNext(){
92+
current = head;
93+
if (current!=null){
94+
head = current.next;
95+
return true;
96+
}
97+
return false;
98+
}
99+
100+
public Object next(){
101+
return current.data;
102+
}
103+
104+
105+
private static class Node{
106+
Object data;
107+
Node next;
108+
109+
}
110+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.github.orajavac.coding2017.basic;
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+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.github.orajavac.coding2017.basic;
2+
3+
public class Queue {
4+
5+
private ArrayList elementData = new ArrayList();
6+
7+
public void enQueue(Object o){
8+
elementData.add(o);
9+
}
10+
11+
public Object deQueue(){
12+
Object obj = elementData.get(0);
13+
elementData.remove(0);
14+
return obj;
15+
}
16+
17+
public ArrayList getElementData() {
18+
return elementData;
19+
}
20+
21+
public void setElementData(ArrayList elementData) {
22+
this.elementData = elementData;
23+
}
24+
25+
public boolean isEmpty(){
26+
if (elementData.size()>0)
27+
return true;
28+
return false;
29+
}
30+
31+
public int size(){
32+
return elementData.size();
33+
}
34+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.github.orajavac.coding2017.basic;
2+
3+
public class Stack {
4+
private ArrayList elementData = new ArrayList();
5+
6+
public void push(Object o){
7+
elementData.add(o);
8+
}
9+
10+
public Object pop(){
11+
int s=elementData.size();
12+
Object obj = null;
13+
for (int i=s-1;i>=0;i--){
14+
if(elementData.get(i)!=null){
15+
obj = elementData.get(i);
16+
elementData.remove(i);
17+
break;
18+
}
19+
}
20+
return obj;
21+
}
22+
23+
public Object peek(){
24+
int s=elementData.size();
25+
Object obj = null;
26+
for (int i=s-1;i>=0;i--){
27+
if(elementData.get(i)!=null){
28+
obj = elementData.get(i);
29+
break;
30+
}
31+
}
32+
return obj;
33+
}
34+
public boolean isEmpty(){
35+
if (elementData.size()>0)
36+
return true;
37+
return false;
38+
}
39+
public int size(){
40+
return elementData.size();
41+
}
42+
public ArrayList getElementData() {
43+
return elementData;
44+
}
45+
46+
public void setElementData(ArrayList elementData) {
47+
this.elementData = elementData;
48+
}
49+
}

0 commit comments

Comments
 (0)