Skip to content

Commit f0290a2

Browse files
authored
Merge pull request onlyliuxin#9 from rexwcl/master
20170219作业 -- QQ号190530132
2 parents 0d7c19c + 3403990 commit f0290a2

File tree

5 files changed

+254
-0
lines changed

5 files changed

+254
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.coding.basic;
2+
3+
public class ArrayList {
4+
5+
private int size = 0;
6+
7+
private Object[] elementData = new Object[100];
8+
9+
10+
//在ArrayList的尾部添加
11+
public void add(Object o){
12+
13+
size = elementData.length + 1;
14+
Object[] tempData = new Object[size];
15+
System.arraycopy(elementData, 0, tempData,0, elementData.length);
16+
elementData = tempData;
17+
18+
elementData[size-1] = o;
19+
20+
}
21+
22+
//在ArrayList中的某一个元素后面添加, 这里的关键在于先移动末尾的元素
23+
public void add(int index, Object o){
24+
25+
size = elementData.length + 1;
26+
Object[] tempData = new Object[size];
27+
System.arraycopy(elementData, 0, tempData,0, elementData.length);
28+
elementData = tempData;
29+
30+
for (int i=elementData.length-2; i>index; i--) {
31+
elementData[i+1] = elementData[i];
32+
}
33+
34+
elementData[index+1] = o;
35+
36+
}
37+
38+
//按下标来访问ArrayList中的元素
39+
public Object get(int index){
40+
return elementData[index];
41+
}
42+
43+
//按下标来删除ArrayList中的元素
44+
public Object remove(int index){
45+
Object r = elementData[index];
46+
for (int i=index; i<elementData.length-1; i++) {
47+
elementData[i] = elementData[i+1];
48+
}
49+
50+
size = elementData.length - 1;
51+
52+
Object[] tempData = new Object[size];
53+
System.arraycopy(elementData, 0, tempData,0, size);
54+
elementData = tempData;
55+
return r;
56+
}
57+
58+
//获取ArrayList的大小
59+
public int size(){
60+
return size;
61+
}
62+
63+
//public Iterator iterator(){
64+
// return null;
65+
//}
66+
67+
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package com.coding.basic;
2+
import java.util.NoSuchElementException;
3+
4+
//以下实现的是单向链表
5+
public class LinkedList {
6+
7+
private int size = 0;
8+
9+
private Node head;
10+
11+
12+
//在不指定index的情况下,默认在链表的尾部添加新节点
13+
public void add(Object o){
14+
addLast(o);
15+
}
16+
17+
18+
//在指定index的情况下,
19+
public void add(int index , Object o){
20+
21+
//index越界检查
22+
if (index < 0 || index >= size) {
23+
throw new IndexOutOfBoundsException("Index:" + index + ",size:" + size);
24+
}
25+
26+
Node n = new Node();
27+
n.data = o;
28+
Node m = get(index);
29+
n.next = m.next;
30+
m.next = n;
31+
size = size + 1;
32+
}
33+
34+
public Node get(int index){
35+
//index越界检查
36+
if (index < 0 || index >= size) {
37+
throw new IndexOutOfBoundsException("Index:" + index + ",size:" + size);
38+
}
39+
40+
Node n = head.next;
41+
int count = 0;
42+
while(count<=index){
43+
if(count==index){
44+
return n;
45+
}
46+
n = n.next;
47+
count++;
48+
}
49+
50+
return null;
51+
}
52+
53+
public void remove(int index){
54+
if(index<0||index>=size)
55+
throw new IndexOutOfBoundsException("Joy Index "+index+", Size: "+size);
56+
57+
Node d = get(index);
58+
Node pred = get(index-1);
59+
pred.next = d.next;
60+
size = size - 1;
61+
}
62+
63+
public int size(){
64+
return size;
65+
}
66+
67+
public void addFirst(Object o){
68+
Node n = new Node();
69+
n.data = o;
70+
71+
//避免空链表
72+
if (head==null) head=new Node();
73+
74+
n.next = head.next;
75+
head.next = n;
76+
size = size + 1;
77+
}
78+
79+
public void addLast(Object o){
80+
Node n = new Node();
81+
n.data = o;
82+
83+
//避免空链表
84+
if (head==null) head = new Node();
85+
86+
//从头部往后顺序查找,找到尾部就添加
87+
Node m = head;
88+
while (m.next != null){
89+
m = m.next;
90+
}
91+
n.next = m.next;
92+
m.next = n;
93+
size = size + 1;
94+
}
95+
96+
public Object removeFirst(){
97+
if(head==null||head.next==null)
98+
throw new NoSuchElementException();
99+
Node d = head.next;
100+
head.next = d.next;
101+
size = size - 1;
102+
return d.data;
103+
}
104+
105+
public Object removeLast(){
106+
if(head==null||head.next==null)
107+
throw new NoSuchElementException();
108+
109+
Node m = head;
110+
Node n = head.next;
111+
while(n.next != null){
112+
m = n;
113+
n = n.next;
114+
}
115+
size = size - 1;
116+
return m.data;
117+
}
118+
119+
//public Iterator iterator(){
120+
// return null;
121+
//}
122+
123+
private static class Node{
124+
Node next;
125+
Object data;
126+
}
127+
128+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.coding.basic;
2+
3+
public class Queue {
4+
5+
LinkedList l = new LinkedList();
6+
public void enQueue(Object o){
7+
l.addLast(o);
8+
}
9+
10+
public Object deQueue(){
11+
return l.removeFirst();
12+
}
13+
14+
public boolean isEmpty(){
15+
if (l.size() == 0)
16+
return true;
17+
else
18+
return false;
19+
}
20+
21+
public int size(){
22+
return l.size();
23+
}
24+
25+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.coding.basic;
2+
3+
public class Stack {
4+
5+
private ArrayList elementData = new ArrayList();
6+
7+
public void push(Object o){
8+
elementData.add(o);
9+
}
10+
11+
public Object pop(){
12+
int index = elementData.size() - 1;
13+
Object o = elementData.remove(index);
14+
return o;
15+
}
16+
17+
public Object peek(){
18+
int e = elementData.size() - 1;
19+
return elementData.get(e);
20+
}
21+
22+
public boolean isEmpty(){
23+
if (elementData.size() == 0 )
24+
return true;
25+
else
26+
return false;
27+
}
28+
29+
public int size(){
30+
return elementData.size();
31+
}
32+
33+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
http://rexwcl.blog.163.com/blog/static/270599039201712651450997/

0 commit comments

Comments
 (0)