diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyArrayList.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyArrayList.java" new file mode 100644 index 0000000000..de63307566 --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyArrayList.java" @@ -0,0 +1,136 @@ +package BasicData; + +import java.util.Arrays; +import java.util.NoSuchElementException; + +/** + * ʵ�ֻ��������ݽṹ����ArrayList + * + * @author Ralf + * + * @param + */ +public class MyArrayList implements MyList { + + private static final int DEFAULT_CAPACITY = 10; + private static int msize; + private T[] elements; + + public MyArrayList() { + msize = 0; + ensureCapacity(DEFAULT_CAPACITY); + } + + @SuppressWarnings("unchecked") + private void ensureCapacity(int newCapacity) { + // TODO Auto-generated method stub + if (msize > newCapacity) { + return; + } + T[] oldElements = elements; + elements = (T[]) new Object[newCapacity]; + for (int i = 0; i < size(); i++) { + elements[i] = oldElements[i]; + } + + } + public void trimSize(){ + if (msize < elements.length) { + ensureCapacity(msize); + } + } + + @Override + public boolean add(T t) { + // TODO Auto-generated method stub + + if (elements.length == size()) { + ensureCapacity(2 * size() + 1); + } + elements[msize++] = t; + return true; + } + + @Override + public void add(int index, T t) { + + if (msize == elements.length) { + ensureCapacity(2 * msize + 1); + } + for (int i = size(); i >= index; i--) { + elements[i + 1] = elements[i]; + } + elements[index] = t; + msize++; + } + + @Override + public int size() { + // TODO Auto-generated method stub + return msize; + } + + @Override + public T remove(int index) { + // TODO Auto-generated method stub + if (index < 0 || index > size()) { + throw new ArrayIndexOutOfBoundsException(); + } + T old = elements[index]; + for (int i = index; i < msize; i++) { + elements[i] = elements[i + 1]; + } + elements[msize--] = null; + return old; + + } + + @Override + public boolean set(int index, T t) { + // TODO Auto-generated method stub + if (index < 0 || index > size()) { + throw new ArrayIndexOutOfBoundsException(); + } + elements[index] = t; + return true; + } + + @Override + public T get(int index) { + // TODO Auto-generated method stub + if (index < 0 || index > msize) { + throw new ArrayIndexOutOfBoundsException(); + } + return elements[index]; + } + + @Override + public String toString() { + return Arrays.toString(elements); + } + + public MyIterator iterator() { + return new MyArrayListIterator(); + } + + private class MyArrayListIterator implements MyIterator { + + private int current = 0;// ��������ָ�� + + public boolean hasNext() { + // TODO Auto-generated method stub + + return current < size(); + } + + public T Next() { + // TODO Auto-generated method stub + if (!hasNext()) { + throw new NoSuchElementException(); + } + return elements[current++]; + } + + } + +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyIterator.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyIterator.java" new file mode 100644 index 0000000000..42bf1d4fa1 --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyIterator.java" @@ -0,0 +1,7 @@ +package BasicData; + +public interface MyIterator { + + public abstract boolean hasNext(); + public abstract T Next(); +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyList.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyList.java" new file mode 100644 index 0000000000..2b2ba5057a --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyList.java" @@ -0,0 +1,16 @@ +package BasicData; + +/** + * �����Լ���List�ӿ� + * @author Ralf + * + */ +public interface MyList { + + public abstract boolean add(T t); + public abstract void add(int index, T t); + public abstract int size(); + public abstract T remove(int index); + public abstract boolean set(int index, T t); + public abstract T get(int index); +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyQueue.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyQueue.java" new file mode 100644 index 0000000000..772b93f879 --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyQueue.java" @@ -0,0 +1,79 @@ +package BasicData; + +/** + * ʵ�ֻ������ݽṹQueue(����) + * + * @author Administrator + * + */ +public class MyQueue { + + private int head; + private int tail; + private T[] elements; + private static final int DEFAUL_SIZE = 10; + private int numOfelements; + + public MyQueue() { + head = 0; + tail = 0; + numOfelements = 0; + setCapacity(DEFAUL_SIZE); + } + + public MyQueue(int capacity) { + head = 0; + tail = 0; + numOfelements = 0; + setCapacity(capacity); + + } + + @SuppressWarnings("unchecked") + private void setCapacity(int capacity) { + elements = (T[]) new Object[capacity]; + } + + public boolean enQueue(T t) { + + if (numOfelements == elements.length) { + return false; + } else { + elements[tail] = t; + numOfelements++; + if (tail == elements.length) + tail = 0; + else + tail++; + return true; + } + + } + + public T deQueue() { + if (head == tail) { + return null; + } else { + T t = elements[head]; + numOfelements--; + elements[head] = null; + if (head == elements.length) + head = 0; + else { + head++; + } + return t; + } + + } + + public boolean isEmpty() { + return numOfelements == 0; + } + + public int size() { + int msize = head - tail; + return msize > 0 ? msize : -msize; + } + +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyStack.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyStack.java" new file mode 100644 index 0000000000..fb12e0dd23 --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyStack.java" @@ -0,0 +1,44 @@ +package BasicData; + +import java.util.LinkedList; +import java.util.NoSuchElementException; + +/** + * ʵ�ֻ������ݽṹջ + * + * @author Ralf + * + */ +public class MyStack { + + private LinkedList linkedList; + + public MyStack() { + if (null == linkedList) { + linkedList = new LinkedList(); + } + } + + public void push(T t) { + linkedList.addFirst(t); + } + + public T pop() { + if (size() == 0) { + throw new NoSuchElementException(); + } + return linkedList.removeFirst(); + } + + public T peek() { + return (size() == 0) ? null : linkedList.getFirst(); + } + + public int size() { + return linkedList.size(); + } + + public boolean isEmpty(){ + return linkedList.isEmpty(); + } +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyTreeNode.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyTreeNode.java" new file mode 100644 index 0000000000..6ca5cecb15 --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/MyTreeNode.java" @@ -0,0 +1,99 @@ +package BasicData; + +//insert ���������� +public class MyTreeNode> { + + private T data; + private MyTreeNode left = null; + private MyTreeNode right = null; + private MyTreeNode root = null; + private MyTreeNode cureeTreeNode = null; + + public T getData() { + return data; + } + public void setData(T data) { + this.data = data; + } + public MyTreeNode getLeft() { + return left; + } + public void setLeft(MyTreeNode left) { + this.left = left; + } + public MyTreeNode getRight() { + return right; + } + public void setRight(MyTreeNode right) { + this.right = right; + } + @Override + public String toString() { + StringBuilder string = new StringBuilder(); + string.append("["); + if (cureeTreeNode == null) { + string.append("]"); + return string.toString(); + } else { + string.append(cureeTreeNode.toString()).append("]"); + return string.toString(); + } + } + + public MyTreeNode insert(T o){ + MyTreeNode newNode = new MyTreeNode(); + MyTreeNode current = null; + newNode.setData(o); + if (root == null) { + root = newNode; + cureeTreeNode = newNode;//���� + return newNode; + } + else { + Digui(o, root); + current = cureeTreeNode; + if (current.getData().compareTo(o) == -1) { + current.right = newNode; + } else { + current.left = newNode; + } + cureeTreeNode = newNode; //���� + return newNode; + } + + } + + public void Digui(T o,MyTreeNode parentnode){ + cureeTreeNode = parentnode; + if (parentnode.left!= null) { + if (parentnode.getData().compareTo(o) == -1) { + parentnode = parentnode.right; + Digui(o, parentnode); + } + else + return; + } + if (parentnode.right != null) { + if (parentnode.getData().compareTo(o) == 1) { + parentnode = parentnode.left; + Digui(o, parentnode); + } + else + return; + } + } + + public void preOrder(MyTreeNode root) { + visit(root); + if(root.getLeft() != null) { + preOrder(root.getLeft()); + } + if(root.getRight() != null) { + preOrder(root.getRight()); + } + } + + public void visit(MyTreeNode btree) { + System.out.print(btree.getData() + "\t"); + } +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/SingleLinkedList.java" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/SingleLinkedList.java" new file mode 100644 index 0000000000..a9e72ed4fa --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/SingleLinkedList.java" @@ -0,0 +1,212 @@ +package BasicData; + +import java.util.NoSuchElementException; + +import javax.lang.model.element.Element; + +public class SingleLinkedList implements MyList { + + private int msize;// ��¼Ԫ�صĸ��� + Note head;// ָ���һ��Ԫ�� + Note last;// ָ�����һ��Ԫ�� + + private static class Note { + private T item = null; + Note next = null; + + public Note(T t) { + this.item = t; + } + } + + public SingleLinkedList() { + + } + + @Override + public boolean add(T t) { + // TODO Auto-generated method stub + final Note l = last; + final Note newNote = new Note(t); + last = newNote; + if (l == null) { + head = newNote;// ֻ������һ��nullԪ�� + } else { + l.next = last; + } + msize++; + return true; + } + + @Override + public void add(int index, T t) { + // TODO Auto-generated method stub + if (index < 0 || index > msize) { + throw new IndexOutOfBoundsException(); + } + if (index == 0) { + addFirst(t); + } + if (index == msize) { + add(t); + } + Note current = head; + for (int i = 0; i < index - 1; i++) { + current = current.next; + } + final Note newNote = new Note(t); + newNote.next = current.next; + current.next = newNote; + msize++; + + } + + public boolean addFirst(T t) { + final Note newNote = new Note(t); + newNote.next = head; + head = newNote; + msize++; + return true; + } + + public boolean addLast(T t) { + final Note newNote = new Note(t); + newNote.next = null; + last.next = newNote; + last = newNote; + msize++; + return true; + } + + public T removeLast() throws Exception { + if (head == null) { + throw new Exception("LinkedList is Empty!"); + } + Note current = head; + if (head.next == null) { + head = null; + last = null; + } else { + while (current.next != null) { + if (current.next == last) { + last = current; + last.next = null; + break; + } + current = current.next; + } + + } + msize--; + return current.item; + + } + + public T removeFirst() throws Exception { + if (head == null) { + throw new Exception("LinkedList is Empty!"); + } + Note element = head; + head = head.next; + msize--; + return element.item; + } + + @Override + public int size() { + // TODO Auto-generated method stub + return msize; + } + + @Override + public T remove(int index) { + // TODO Auto-generated method stub + if (index < 0 || index > msize) { + throw new IndexOutOfBoundsException(); + } + Note element; + if (index == 0) { + element = head; + head = head.next; + msize--; + return element.item; + } + Note current = head; + for (int i = 0; i < index - 1; i++) { + current = current.next; + } + element = current.next; + if (index == msize) { + current.next = null; + last = current; + } else { + current.next = current.next.next; + } + + msize--; + return element.item; + } + + @Override + public boolean set(int index, T t) { + // TODO Auto-generated method stub + if (index < 0 || index > msize) { + throw new IndexOutOfBoundsException(); + } + Note current = head; + for (int i = 0; i < index; i++) { + current = head.next; + } + current.item = t; + return true; + } + + @Override + public T get(int index) { + // TODO Auto-generated method stub + if (index < 0 || index > msize) { + throw new IndexOutOfBoundsException(); + } + Note current = head; + for (int i = 0; i < index; i++) { + current = current.next; + } + return current.item; + } + + public MyIterator iterator() { + return new MyLinkedListIterator(); + } + + private class MyLinkedListIterator implements MyIterator { + + private int current = 0; + private Note nextNote = head; + + @Override + public boolean hasNext() { + // TODO Auto-generated method stub + return current < msize; + } + + @Override + public T Next() { + // TODO Auto-generated method stub + if (!hasNext()) { + throw new NoSuchElementException(); + } else { + current++; + Note eleNote = nextNote; + if (last == nextNote) { + nextNote = null; + } else { + nextNote = nextNote.next; + } + return eleNote.item; + + } + + } + } + +} diff --git "a/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/\346\226\207\347\253\240\345\234\260\345\235\200" "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/\346\226\207\347\253\240\345\234\260\345\235\200" new file mode 100644 index 0000000000..2ebe35c33a --- /dev/null +++ "b/group20/925290009/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232/\346\226\207\347\253\240\345\234\260\345\235\200" @@ -0,0 +1 @@ +[文章链接](http://blog.csdn.net/u011371324/article/details/57146892)