Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions group22/1335499238/week01/src/basic/ArrayList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package basic;

import java.util.Arrays;

public class ArrayList implements List{

private int size;

private Object[] elementData = {};

public ArrayList(){
this(16);
}

public ArrayList(int capacity){
if(capacity > 0){
elementData = new Object[capacity];
}else if(capacity == 0){

}else{
new IllegalArgumentException("initsize:"+capacity);
}
}

@Override
public void add(Object o) {
ensureCapacity(elementData.length + 1);
elementData[size++] = o;
}

@Override
public void add(int index, Object o) {
checkIndex(index);
ensureCapacity(size + 1);
System.arraycopy(elementData, index, elementData, index+1, size - index);
elementData[index] = o;
size++;
}

@Override
public Object get(int index) {
checkIndex(index);
return elementData[index];
}

@Override
public Object remove(int index) {
checkIndex(index);
Object removeparam = elementData[index];
int numMoved = size - index - 1;
if(numMoved > 0){
System.arraycopy(elementData, index+1, elementData, index, numMoved);
}
elementData[--size] = null; //置空末尾元素
return removeparam;
}

@Override
public int size() {
return size;
}

/**
* 检查是否越界
* @param index
*/
public void checkIndex(int index){
if(index > size || index < 0){
throw new IndexOutOfBoundsException("current:"+index+" size:"+size);
}
}

/**
* 判断当前容量是否足够
* @param minCapacity
*/
private void ensureCapacity(int minCapacity){
if(minCapacity > elementData.length){
grow(minCapacity);
}
}

/**
* 扩容
* @param minCapacity
*/
private void grow(int minCapacity){
Object [] target = new Object [minCapacity+10];
System.arraycopy(elementData, 0, target, 0, elementData.length);
elementData = target;
}

public Iterator iterator() {
return new ArrayListIterator();
}

private class ArrayListIterator implements Iterator{

private int current = 0;

@Override
public boolean hasNext() {
return current < size;
}

@Override
public Object next() {
int i = current;
if(current >= size){
throw new IndexOutOfBoundsException("current:"+current+" size:"+size);
}
current++;
return elementData[i];
}

}

@Override
public String toString() {
return Arrays.toString(Arrays.copyOf(elementData, size));
}

}
81 changes: 81 additions & 0 deletions group22/1335499238/week01/src/basic/BinaryTreeNode.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package basic;

public class BinaryTreeNode <T extends Comparable<T>>{


private T data;
private BinaryTreeNode<T> left;
private BinaryTreeNode<T> right;

public BinaryTreeNode(T o){
this.data = o;
this.left = null;
this.right = null;
}

public Object getData() {
return data;
}

public void setData(T data) {
this.data = data;
}

public BinaryTreeNode<T> getLeft() {
return left;
}

public void setLeft(BinaryTreeNode<T> left) {
this.left = left;
}

public BinaryTreeNode<?> getRight() {
return right;
}

public void setRight(BinaryTreeNode<T> right) {
this.right = right;
}

public BinaryTreeNode<T> insert(T o){
BinaryTreeNode<T> current = this;
BinaryTreeNode<T> addTreeNode = new BinaryTreeNode<>(o);
while(true){
//如果传入的值比但前节点的值小
if(o.compareTo(current.data) < 0){
if(current.left != null){
current = current.left;
}else {
current.left = addTreeNode;
break;
}
}else{
if(current.right != null){
current = current.right;
}else{
current.right =addTreeNode;
break;
}
}
}
return addTreeNode;
}

public LinkedList prevOrder(BinaryTreeNode<T> binaryTreeNode){
LinkedList linkedList = new LinkedList();
preOrder(binaryTreeNode, linkedList);
return linkedList;
}

private void preOrder(BinaryTreeNode<T> binaryTreeNode,LinkedList linkedList){
if(binaryTreeNode.left != null){
preOrder(binaryTreeNode.left, linkedList);

}
linkedList.add(binaryTreeNode.data);
if(binaryTreeNode.right != null){
preOrder(binaryTreeNode.right, linkedList);
}
}

}
9 changes: 9 additions & 0 deletions group22/1335499238/week01/src/basic/Iterator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package basic;

public interface Iterator {

public boolean hasNext();

public Object next();

}
Loading