Skip to content

Commit

Permalink
Merge pull request #23 from duxiaolong/master
Browse files Browse the repository at this point in the history
Master
  • Loading branch information
gaodekui authored Mar 1, 2017
2 parents 51f51d7 + 314dd5c commit c00e9f8
Show file tree
Hide file tree
Showing 12 changed files with 491 additions and 245 deletions.
126 changes: 63 additions & 63 deletions group16/1287642108/0226/src/com/coding/basic/ArrayList.java
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("数组下标越界");
}
}
12 changes: 6 additions & 6 deletions group16/1287642108/0226/src/com/coding/basic/Iterator.java
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 group16/1287642108/0226/src/com/coding/basic/LinkedList.java
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;
}
}
18 changes: 9 additions & 9 deletions group16/1287642108/0226/src/com/coding/basic/List.java
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();
}
Loading

0 comments on commit c00e9f8

Please sign in to comment.