Skip to content

Commit e6aa67f

Browse files
committed
001DataStructure
1 parent 3d5e9d6 commit e6aa67f

File tree

15 files changed

+547
-0
lines changed

15 files changed

+547
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src/main/java"/>
4+
<classpathentry kind="src" path="src/test/java"/>
5+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
6+
<classpathentry exported="true" kind="con" path="org.springsource.ide.eclipse.gradle.classpathcontainer"/>
7+
<classpathentry kind="output" path="bin"/>
8+
</classpath>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/bin/
2+
/build/
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>001DataStructure</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.springsource.ide.eclipse.gradle.core.nature</nature>
16+
<nature>org.eclipse.jdt.core.javanature</nature>
17+
</natures>
18+
</projectDescription>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#org.springsource.ide.eclipse.gradle.core.preferences.GradleImportPreferences
2+
#Sat Feb 25 12:36:04 CST 2017
3+
addResourceFilters=true
4+
afterTasks=afterEclipseImport;
5+
beforeTasks=cleanEclipse;eclipse;
6+
enableAfterTasks=true
7+
enableBeforeTasks=true
8+
enableDependendencyManagement=true
9+
projects=;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#org.springsource.ide.eclipse.gradle.core.preferences.GradleProjectPreferences
2+
#Thu Feb 23 15:58:56 CST 2017
3+
build.family.org.gradle.tooling.model.eclipse.HierarchicalEclipseProject=;
4+
org.springsource.ide.eclipse.gradle.linkedresources=
5+
org.springsource.ide.eclipse.gradle.rootprojectloc=
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#org.springsource.ide.eclipse.gradle.core.actions.GradleRefreshPreferences
2+
#Sat Feb 25 12:36:04 CST 2017
3+
addResourceFilters=true
4+
afterTasks=afterEclipseImport;
5+
beforeTasks=cleanEclipse;eclipse;
6+
enableAfterTasks=true
7+
enableBeforeTasks=true
8+
useHierarchicalNames=false
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.7
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.7
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.7
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 001DataStructure
2+
001DataStructure
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apply plugin:'java'
2+
3+
repositories{
4+
mavenCentral()
5+
}
6+
7+
dependencies{
8+
compile group: 'junit', name: 'junit', version: '4.12'
9+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.easy.util.myarraylist;
2+
3+
public class ArrayList {
4+
5+
private int size = 0;
6+
7+
private Object[] elementData;
8+
9+
public ArrayList() {
10+
this.elementData = new Object[] {};
11+
}
12+
13+
public ArrayList(int initialCapacity) {
14+
this.elementData = new Object[initialCapacity];
15+
}
16+
17+
public void add(Object o) {
18+
if (elementData.length <= size) {
19+
grow(1);
20+
elementData[size] = o;
21+
size++;
22+
} else {
23+
elementData[size] = o;
24+
size++;
25+
}
26+
}
27+
28+
public void add(int index, Object o) {
29+
rangeCheckForAdd(index);
30+
grow(1);
31+
System.arraycopy(elementData, index, elementData, index + 1, size - index);
32+
elementData[index] = o;
33+
size++;
34+
}
35+
36+
public Object get(int index) {
37+
rangeCheck(index);
38+
return elementData[index];
39+
}
40+
41+
public Object remove(int index) {
42+
if (index < size) {
43+
Object removeValue = elementData[index];
44+
Object[] dest = new Object[size - 1];
45+
System.arraycopy(elementData, 0, dest, 0, index);
46+
System.arraycopy(elementData, index + 1, dest, index, size - index - 1);
47+
elementData = dest;
48+
size--;
49+
return removeValue;
50+
} else {
51+
return null;
52+
}
53+
}
54+
55+
public int size() {
56+
return this.size;
57+
}
58+
59+
private void grow(int minCapacity) {
60+
Object[] dest = new Object[elementData.length + minCapacity];
61+
System.arraycopy(elementData, 0, dest, 0, elementData.length);
62+
elementData = dest;
63+
}
64+
65+
@Override
66+
public String toString() {
67+
StringBuilder sb = new StringBuilder();
68+
for (Object object : elementData) {
69+
sb.append(object + ",");
70+
}
71+
String temp = sb.toString();
72+
temp = temp.substring(0, temp.length() - 1);
73+
return "[" + temp + "]";
74+
}
75+
76+
private void rangeCheck(int index) {
77+
if (index >= size) {
78+
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
79+
}
80+
}
81+
82+
private String outOfBoundsMsg(int index) {
83+
return "Index:" + index + ",Size:" + size;
84+
}
85+
86+
private void rangeCheckForAdd(int index) {
87+
if (index < 0 || index > size) {
88+
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
89+
}
90+
}
91+
}
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
package com.easy.util.mylinkedlist;
2+
3+
import java.util.NoSuchElementException;
4+
5+
public class LinkedList {
6+
7+
private Node first;
8+
private Node last;
9+
int size=0;
10+
11+
public LinkedList(){
12+
13+
}
14+
15+
public void add(Object o){
16+
linkLast(o);
17+
}
18+
public void add(int index , Object o){
19+
checkPositionIndex(index);
20+
21+
if(index==size){
22+
linkLast(o);
23+
}else if(index==0){
24+
linkFirst(o);
25+
}else {
26+
linkBefore(index, o);
27+
}
28+
}
29+
30+
31+
private void linkBefore(int index,Object o){
32+
Node pred=node(index-1);
33+
Node newNode=new Node(o, node(index));
34+
pred.next=newNode;
35+
size++;
36+
}
37+
38+
public Object get(int index){
39+
return node(index).item;
40+
}
41+
public boolean remove(Object o){
42+
Node temp=first;
43+
if(o==null){
44+
for(int i=0;i<size;i++){
45+
if(temp.item==null){
46+
unlink(i);
47+
return true;
48+
}
49+
}
50+
}else{
51+
for(int i=0;i<size;i++){
52+
if (temp.item.equals(o)) {
53+
unlink(i);
54+
return true;
55+
}
56+
}
57+
}
58+
return false;
59+
}
60+
61+
private void unlink(int index){
62+
Node before =node(index-1);
63+
Node target = before.next;
64+
Node after = target.next;
65+
before.next=after;
66+
size--;
67+
}
68+
69+
70+
public int size(){
71+
return this.size;
72+
}
73+
74+
public void addFirst(Object o){
75+
linkFirst(o);
76+
}
77+
public void addLast(Object o){
78+
linkLast(o);
79+
}
80+
public Object removeFirst(){
81+
Node temp = first;
82+
if(temp==null){
83+
throw new NoSuchElementException();
84+
}
85+
return unlinkFirst(temp);
86+
}
87+
public Object removeLast(){
88+
Node temp =last;
89+
if(last==null){
90+
throw new NoSuchElementException();
91+
}
92+
if(size==1){
93+
first=last=null;
94+
return temp;
95+
}
96+
return unlinkLast(temp);
97+
}
98+
99+
100+
private static class Node{
101+
Object item;
102+
Node next;
103+
public Node(Object element,Node next) {
104+
this.item=element;
105+
this.next=next;
106+
}
107+
}
108+
109+
110+
private void linkLast(Object o){
111+
Node temp=last;
112+
Node newNode=new Node(o, null);
113+
last=newNode;
114+
if(temp==null){
115+
first=newNode;
116+
}else{
117+
temp.next=newNode;
118+
}
119+
size++;
120+
}
121+
122+
private void linkFirst(Object o){
123+
Node temp=first;
124+
Node newNode=new Node(o, temp);
125+
first=newNode;
126+
if(temp==null){
127+
last=newNode;
128+
}else{
129+
first.next=temp;
130+
}
131+
size++;
132+
}
133+
134+
private Object unlinkFirst(Node temp){
135+
Object element = temp.item;
136+
Node next = temp.next;
137+
first = next;
138+
if(next==null){
139+
last=null;
140+
}
141+
size--;
142+
return element;
143+
}
144+
145+
private Object unlinkLast(Node temp){
146+
Node xNode = first;
147+
for(int i=0;i<size-2;i++){
148+
xNode = xNode.next;
149+
}
150+
last=xNode;
151+
last.next=null;
152+
size--;
153+
return temp.item;
154+
}
155+
private Node node(int index){
156+
if(index<size){
157+
Node xNode =first;
158+
for(int i=0;i<index;i++){
159+
xNode=xNode.next;
160+
}
161+
return xNode;
162+
}
163+
return null;
164+
}
165+
166+
@Override
167+
public String toString() {
168+
StringBuilder sb = new StringBuilder();
169+
Node xNode = first;
170+
for(int i=0;i<size;i++){
171+
Object object = xNode.item;
172+
sb.append(object+",");
173+
xNode=xNode.next;
174+
}
175+
String temp = sb.toString();
176+
temp = temp.substring(0, temp.length() - 1);
177+
return "[" + temp + "]";
178+
}
179+
180+
private void checkPositionIndex(int index){
181+
if(!isPositionIndex(index)){
182+
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
183+
}
184+
}
185+
186+
private boolean isPositionIndex(int index){
187+
return index>0&&index<=size;
188+
}
189+
190+
private String outOfBoundsMsg(int index) {
191+
return "Index: "+index+", Size: "+size;
192+
}
193+
194+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.easy.util.myqueue;
2+
3+
import com.easy.util.mylinkedlist.LinkedList;
4+
5+
public class Queue {
6+
7+
LinkedList linkedList;
8+
public Queue(){
9+
linkedList=new LinkedList();
10+
}
11+
12+
public void enQueue(Object o){
13+
linkedList.add(o);
14+
}
15+
16+
public Object deQueue(){
17+
return linkedList.removeFirst();
18+
}
19+
20+
public boolean isEmpty(){
21+
return size()==0;
22+
}
23+
24+
public int size(){
25+
return linkedList.size();
26+
}
27+
}

0 commit comments

Comments
 (0)