Skip to content

Commit 60121dc

Browse files
committed
FirstHomework
DataStructures
1 parent 96dd311 commit 60121dc

File tree

13 files changed

+446
-0
lines changed

13 files changed

+446
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5+
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
6+
<classpathentry kind="output" path="bin"/>
7+
</classpath>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/bin/
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>FirstHomework</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.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
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.8
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.8
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.8
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.coding.basic;
2+
3+
import java.util.*;
4+
5+
public class MyArrayList implements MyList{
6+
//定义Object类型数组
7+
//定义数组元素个数
8+
private int size=0;
9+
private Object [] elementData =new Object[10];
10+
11+
public void add(Object o) {
12+
ensureCapacity(size+1);
13+
elementData[size] = o;
14+
size++;
15+
}
16+
17+
//添加指定位置的元
18+
public void add (int index,Object element){
19+
if(index > size || index < 0)
20+
throw new IndexOutOfBoundsException("数组角标越界");
21+
ensureCapacity(size+1);
22+
//添加指定位置元素
23+
//将该位置后的有元素右
24+
System.arraycopy(elementData,index,elementData,index+1,size-index);
25+
elementData[index] =element;
26+
size++;
27+
}
28+
29+
//可调整数组的容量
30+
public void ensureCapacity (int mincapacity){
31+
int oldlen =elementData.length;
32+
if(mincapacity > oldlen){
33+
int newlen =(oldlen * 3)/2 + 1;
34+
if(mincapacity > newlen)
35+
newlen =mincapacity;
36+
elementData =Arrays.copyOf(elementData,newlen);
37+
}
38+
}
39+
40+
41+
//获取指定位置的元
42+
public Object get(int index){
43+
if(index < 0 || index >size-1){
44+
throw new IndexOutOfBoundsException("数组角标越界");
45+
}
46+
return elementData[index];
47+
}
48+
49+
public Object remove(int index){
50+
if(index >=size || index < 0){
51+
throw new IndexOutOfBoundsException("数组角标越界");
52+
}
53+
Object oldelement =elementData[index];
54+
int numMoved = size-index-1;
55+
if(numMoved > 0){
56+
System.arraycopy(elementData,index+1,elementData,index,numMoved);
57+
}
58+
size--;
59+
return oldelement;
60+
}
61+
62+
public void clear(){
63+
elementData = null;
64+
}
65+
66+
public boolean isEmpty (){
67+
return size == 0;
68+
}
69+
70+
public int size (){
71+
return size;
72+
}
73+
}
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.coding.basic;
2+
3+
import java.util.*;
4+
5+
public class MyLinkedList implements MyList{
6+
//用内部类定义链表中的节点
7+
private class Node{
8+
//节点中包含数据和引用
9+
Object data;
10+
Node next;
11+
12+
public Node (){
13+
14+
}
15+
16+
//每个节点包含数据和引
17+
public Node (Object data,Node next){
18+
this.data =data;
19+
this.next =next;
20+
}
21+
}
22+
//定义头节点和尾节
23+
public Node head;
24+
public Node tail;
25+
public int size;
26+
27+
//无参数构造函数创建空链表
28+
public MyLinkedList(){
29+
head =null;
30+
tail =null;
31+
}
32+
33+
//链表中传入元
34+
public MyLinkedList(Object element){
35+
head.data =element;
36+
head.next =tail;
37+
size++;
38+
}
39+
40+
public void add(Object o){
41+
addLast(o);
42+
}
43+
public void addFirst(Object element) {
44+
45+
head =new Node(element,head);
46+
if(tail == null){
47+
tail=head;
48+
}
49+
size++;
50+
}
51+
52+
public void addLast(Object element) {
53+
if(head == null) {
54+
head =new Node (element,null);
55+
tail =head;
56+
}else{
57+
Node newNode =new Node(element,null);
58+
tail.next =newNode;
59+
tail=newNode;
60+
}
61+
size++;
62+
63+
}
64+
65+
public void add(int index,Object element){
66+
67+
if(index < 0 || index > size) {
68+
throw new IndexOutOfBoundsException("索引越界");
69+
}
70+
if(index == 0) {
71+
head =new Node(element,head);
72+
}
73+
Node frontNode =getNode(index-1);
74+
frontNode.next =new Node(element,frontNode.next);
75+
size++;
76+
}
77+
public Node getNode(int index)
78+
{
79+
if(index < 0 || index > size-1) {
80+
81+
throw new IndexOutOfBoundsException("索引越界");
82+
}
83+
Node current=head;
84+
for(int i=0;i < size; i++,current =current.next) {
85+
if(i == index) {
86+
return current;
87+
}
88+
}
89+
return null;
90+
}
91+
92+
public Object get(int index){
93+
return getNode(index).data;
94+
}
95+
96+
public Object remove(int index){
97+
if(index < 0 || index > size-1) {
98+
throw new IndexOutOfBoundsException("索引越界");
99+
}
100+
Node delNode =null;
101+
if(index == 0) {
102+
delNode =head;
103+
head =head.next;
104+
}else{
105+
Node frontNode =getNode(index-1);
106+
delNode =frontNode.next;
107+
frontNode.next =delNode.next;
108+
delNode.next =null;
109+
}
110+
size--;
111+
return delNode.data;
112+
}
113+
114+
public Object removeFirst(){
115+
if(head == null || head.next == null)
116+
throw new NoSuchElementException();
117+
Node oldhead =head;
118+
head =head.next;
119+
oldhead.next =null;
120+
size--;
121+
return oldhead.data;
122+
123+
}
124+
125+
public Object removeLast(){
126+
return remove(size - 1);
127+
128+
}
129+
130+
131+
public int size() {
132+
return size;
133+
}
134+
135+
136+
}
137+
138+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.coding.basic;
2+
3+
public interface MyList {
4+
5+
public void add(Object o);
6+
public void add(int index,Object o);
7+
public Object get(int index);
8+
public Object remove(int index);
9+
public int size();
10+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.coding.basic;
2+
3+
public class MyQueue {
4+
5+
MyLinkedList link =new MyLinkedList();
6+
7+
//入队
8+
public void enQueue(Object o){
9+
link.addLast(o);
10+
}
11+
//出队
12+
public Object deQueue(){
13+
return link.removeFirst();
14+
}
15+
//判断是否为空
16+
public boolean isEmpty(){
17+
return link.size == 0;
18+
}
19+
//获取长度
20+
public int size(){
21+
return link.size;
22+
}
23+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.coding.basic;
2+
3+
import java.util.*;
4+
5+
public class MyStack {
6+
7+
8+
MyArrayList elementData=new MyArrayList();
9+
10+
//入栈
11+
public void push(Object o){
12+
elementData.add(o);
13+
}
14+
15+
//出栈
16+
public Object pop(){
17+
18+
Object element =elementData.get(elementData.size() - 1);
19+
elementData.remove(elementData.size()-1);
20+
return element;
21+
}
22+
23+
//获取栈顶元素
24+
public Object peek(){
25+
int len =elementData.size();
26+
if(len == 0)
27+
throw new EmptyStackException();
28+
Object element =elementData.get(len - 1);
29+
return element;
30+
}
31+
32+
public int size(){
33+
return elementData.size();
34+
}
35+
36+
public boolean isEmpty(){
37+
return elementData.size() == 0;
38+
}
39+
40+
public boolean empty(){
41+
return elementData.isEmpty();
42+
}
43+
44+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.coding.test;
2+
3+
import static org.junit.Assert.*;
4+
5+
import org.junit.Test;
6+
7+
import com.coding.basic.MyArrayList;
8+
9+
public class MyArrayListTest {
10+
11+
@Test
12+
public void test() {
13+
MyArrayList sa =new MyArrayList();
14+
sa.add(0,0);
15+
sa.add(1,1);
16+
sa.add(2,2);
17+
sa.add(3,3);
18+
19+
//System.out.println(sa.get(1));
20+
21+
for(int i=0; i<sa.size(); i++)
22+
{
23+
System.out.print(sa.get(i));
24+
}
25+
26+
System.out.println(sa.remove(3));
27+
28+
for(int i=0; i<sa.size(); i++)
29+
{
30+
System.out.print(sa.get(i));
31+
}
32+
}
33+
34+
}

0 commit comments

Comments
 (0)