-
Notifications
You must be signed in to change notification settings - Fork 641
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #23 from duxiaolong/master
Master
- Loading branch information
Showing
12 changed files
with
491 additions
and
245 deletions.
There are no files selected for viewing
126 changes: 63 additions & 63 deletions
126
group16/1287642108/0226/src/com/coding/basic/ArrayList.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,63 @@ | ||
package com.coding.basic; | ||
|
||
public class ArrayList implements List { | ||
|
||
private int size = 0; | ||
|
||
private Object[] elementData = new Object[100]; | ||
|
||
public void add(Object o) { | ||
IncrementsCapacity(size + 1); | ||
elementData[size++] = o; | ||
|
||
} | ||
|
||
public void add(int index, Object o) { | ||
checkIndex(index); | ||
IncrementsCapacity(size + 1); | ||
System.arraycopy(elementData, index, elementData, index + 1, size - index); | ||
elementData[index] = o; | ||
size++; | ||
} | ||
|
||
public Object get(int index) { | ||
checkIndex(index); | ||
return elementData[index]; | ||
} | ||
|
||
public Object remove(int index) { | ||
checkIndex(index); | ||
Object o = elementData[index]; | ||
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1); | ||
elementData[--size] = null; | ||
return o; | ||
} | ||
|
||
public int size() { | ||
return size; | ||
} | ||
|
||
public int length() { | ||
return elementData.length; | ||
} | ||
|
||
// 扩容 | ||
private void IncrementsCapacity(int num) { | ||
if (num > elementData.length) { | ||
int oldCapacity = elementData.length; // 当前数组长度 | ||
int newCapacity = ((num + oldCapacity) * 3) >> 2; // 当前数组长度的1.5倍 | ||
if (newCapacity - num < 0) { | ||
newCapacity = num; // 若新容量还是不够,直接扩为需求值 | ||
} | ||
Object[] oldelements = elementData; | ||
elementData = new Object[newCapacity]; | ||
System.arraycopy(oldelements, 0, elementData, 0, size); | ||
} | ||
} | ||
|
||
// 下标越界判断 | ||
private void checkIndex(int index) { | ||
if (index >= size || index < 0) | ||
throw new IndexOutOfBoundsException("数组下标越界"); | ||
} | ||
} | ||
package com.coding.basic; | ||
|
||
public class ArrayList implements List { | ||
|
||
private int size = 0; | ||
|
||
private Object[] elementData = new Object[100]; | ||
|
||
public void add(Object o) { | ||
IncrementsCapacity(size + 1); | ||
elementData[size++] = o; | ||
|
||
} | ||
|
||
public void add(int index, Object o) { | ||
checkIndex(index); | ||
IncrementsCapacity(size + 1); | ||
System.arraycopy(elementData, index, elementData, index + 1, size - index); | ||
elementData[index] = o; | ||
size++; | ||
} | ||
|
||
public Object get(int index) { | ||
checkIndex(index); | ||
return elementData[index]; | ||
} | ||
|
||
public Object remove(int index) { | ||
checkIndex(index); | ||
Object o = elementData[index]; | ||
System.arraycopy(elementData, index + 1, elementData, index, size - index - 1); | ||
elementData[--size] = null; | ||
return o; | ||
} | ||
|
||
public int size() { | ||
return size; | ||
} | ||
|
||
public int length() { | ||
return elementData.length; | ||
} | ||
|
||
// 扩容 | ||
private void IncrementsCapacity(int num) { | ||
if (num > elementData.length) { | ||
int oldCapacity = elementData.length; // 当前数组长度 | ||
int newCapacity = ((num + oldCapacity) * 3) >> 2; // 当前数组长度的1.5倍 | ||
if (newCapacity - num < 0) { | ||
newCapacity = num; // 若新容量还是不够,直接扩为需求值 | ||
} | ||
Object[] oldelements = elementData; | ||
elementData = new Object[newCapacity]; | ||
System.arraycopy(oldelements, 0, elementData, 0, size); | ||
} | ||
} | ||
|
||
// 下标越界判断 | ||
private void checkIndex(int index) { | ||
if (index >= size || index < 0) | ||
throw new IndexOutOfBoundsException("数组下标越界"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
package com.coding.basic; | ||
|
||
public interface Iterator { | ||
public boolean hasNext(); | ||
public Object next(); | ||
} | ||
package com.coding.basic; | ||
|
||
public interface Iterator { | ||
public boolean hasNext(); | ||
public Object next(); | ||
} |
202 changes: 101 additions & 101 deletions
202
group16/1287642108/0226/src/com/coding/basic/LinkedList.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,101 +1,101 @@ | ||
package com.coding.basic; | ||
|
||
public class LinkedList implements List { | ||
|
||
private Node head; | ||
private Node tail; | ||
private int size = 0 ; | ||
|
||
public void add(Object o){ | ||
addLast(o); | ||
} | ||
|
||
public void add(int index, Object o) { | ||
if (index == 0) { | ||
addFirst(o); | ||
} else if (index >= size) { | ||
addLast(o); | ||
} else { | ||
Node node = new Node(); | ||
node.data = o; | ||
node.next = getNode(index); | ||
getNode(index - 1).next = node; | ||
size++; | ||
} | ||
} | ||
|
||
public Object get(int index) { | ||
Node node = getNode(index); | ||
return node.data; | ||
} | ||
|
||
public Object remove(int index){ | ||
Node currentNode = getNode(index); | ||
Node prevNode = getNode(index - 1); | ||
Node lastNode = getNode(index + 1); | ||
prevNode.next = lastNode; | ||
size--; | ||
return currentNode.data; | ||
} | ||
|
||
public int size(){ | ||
return size; | ||
} | ||
|
||
public void addFirst(Object o){ | ||
Node node=new Node(); | ||
node.data = o; | ||
node.next = head; | ||
head = node; | ||
size++; | ||
} | ||
public void addLast(Object o){ | ||
Node node=new Node(); | ||
node.data = o; | ||
node.next = null; | ||
Node lastNode = getNode(size-1); | ||
lastNode.next = node; | ||
size++; | ||
} | ||
public Object removeFirst(){ | ||
Object obj = getNode(0).data; | ||
Node node = getNode(1); | ||
node.next = head; | ||
size--; | ||
return obj; | ||
} | ||
public Object removeLast(){ | ||
Object obj = getNode(size - 1).data; | ||
Node node = getNode(size - 2); | ||
node.next = null; | ||
size--; | ||
return obj; | ||
} | ||
|
||
//获取节点 | ||
public Node getNode(int index){ | ||
checkIndex(index); | ||
if(index == 0 ){ | ||
return head; | ||
}else if(index == size -1 ){ | ||
return tail; | ||
}else{ | ||
Node node = head; | ||
for(int i=0;i<index;i++){ | ||
node = node.next; | ||
} | ||
return node; | ||
} | ||
} | ||
|
||
// 下标越界判断 | ||
private void checkIndex(int index) { | ||
if (index >= size || index < 0) | ||
throw new IndexOutOfBoundsException("数组下标越界"); | ||
} | ||
|
||
private static class Node { | ||
Object data; | ||
Node next; | ||
} | ||
} | ||
package com.coding.basic; | ||
|
||
public class LinkedList implements List { | ||
|
||
private Node head; | ||
private Node tail; | ||
private int size = 0 ; | ||
|
||
public void add(Object o){ | ||
addLast(o); | ||
} | ||
|
||
public void add(int index, Object o) { | ||
if (index == 0) { | ||
addFirst(o); | ||
} else if (index >= size) { | ||
addLast(o); | ||
} else { | ||
Node node = new Node(); | ||
node.data = o; | ||
node.next = getNode(index); | ||
getNode(index - 1).next = node; | ||
size++; | ||
} | ||
} | ||
|
||
public Object get(int index) { | ||
Node node = getNode(index); | ||
return node.data; | ||
} | ||
|
||
public Object remove(int index){ | ||
Node currentNode = getNode(index); | ||
Node prevNode = getNode(index - 1); | ||
Node lastNode = getNode(index + 1); | ||
prevNode.next = lastNode; | ||
size--; | ||
return currentNode.data; | ||
} | ||
|
||
public int size(){ | ||
return size; | ||
} | ||
|
||
public void addFirst(Object o){ | ||
Node node=new Node(); | ||
node.data = o; | ||
node.next = head; | ||
head = node; | ||
size++; | ||
} | ||
public void addLast(Object o){ | ||
Node node=new Node(); | ||
node.data = o; | ||
node.next = null; | ||
Node lastNode = getNode(size-1); | ||
lastNode.next = node; | ||
size++; | ||
} | ||
public Object removeFirst(){ | ||
Object obj = getNode(0).data; | ||
Node node = getNode(1); | ||
node.next = head; | ||
size--; | ||
return obj; | ||
} | ||
public Object removeLast(){ | ||
Object obj = getNode(size - 1).data; | ||
Node node = getNode(size - 2); | ||
node.next = null; | ||
size--; | ||
return obj; | ||
} | ||
|
||
//获取节点 | ||
public Node getNode(int index){ | ||
checkIndex(index); | ||
if(index == 0 ){ | ||
return head; | ||
}else if(index == size -1 ){ | ||
return tail; | ||
}else{ | ||
Node node = head; | ||
for(int i=0;i<index;i++){ | ||
node = node.next; | ||
} | ||
return node; | ||
} | ||
} | ||
|
||
// 下标越界判断 | ||
private void checkIndex(int index) { | ||
if (index >= size || index < 0) | ||
throw new IndexOutOfBoundsException("数组下标越界"); | ||
} | ||
|
||
private static class Node { | ||
Object data; | ||
Node next; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
package com.coding.basic; | ||
|
||
public interface List { | ||
public void add(Object o); | ||
public void add(int index, Object o); | ||
public Object get(int index); | ||
public Object remove(int index); | ||
public int size(); | ||
} | ||
package com.coding.basic; | ||
|
||
public interface List { | ||
public void add(Object o); | ||
public void add(int index, Object o); | ||
public Object get(int index); | ||
public Object remove(int index); | ||
public int size(); | ||
} |
Oops, something went wrong.