From 97248d3ee35c82038ae8c164a24a7f706f854341 Mon Sep 17 00:00:00 2001 From: lqingchenl <953840070@qq.com> Date: Sun, 26 Feb 2017 08:53:43 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/ArrayList.java | 104 ++++++++++++++ .../lqingchenl/coding2017/basic/Iterator.java | 7 + .../coding2017/basic/LinkedList.java | 127 ++++++++++++++++++ .../lqingchenl/coding2017/basic/List.java | 9 ++ .../lqingchenl/coding2017/basic/Queue.java | 39 ++++++ .../lqingchenl/coding2017/basic/Stack.java | 46 +++++++ 6 files changed, 332 insertions(+) create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java new file mode 100644 index 0000000000..1019222a9e --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java @@ -0,0 +1,104 @@ +package com.github.lqingchenl.coding2017.basic; + +import com.github.lqingchenl.coding2017.basic.List; +import org.junit.Test; + +import java.util.Arrays; + + +public class ArrayList implements List { + private int size = 0; + + private Object[] elementData = new Object[3]; + + /** + * 添加一个元素 + * + * @param o + */ + public void add(Object o) { + elementData[size] = o; + size = size + 1; + if (size >= elementData.length) { + elementData = Arrays.copyOf(elementData, elementData.length * 2); + } + } + + /** + * 往固定位置添加一个元素 + * + * @param index + * @param o + */ + public void add(int index, Object o) { + size = size + 1; + if (size >= elementData.length) { + elementData = Arrays.copyOf(elementData, elementData.length * 2); + } + // 将指定索引出后面的元素集体向后移动一格 +// for (int i = size; i >= index; i--) { +// elementData[i + 1] = elementData[i]; +// } + + System.arraycopy(elementData, index, elementData, index + 1, size - index); + elementData[index] = o; + } + + /** + * 获取元素 + * @param index + * @return + */ + public Object get(int index) { + + if (index < 0 || index > size) { + throw new IndexOutOfBoundsException("索引越界"); + } + return elementData[index]; + } + + /** + * 移除元素 + * @param index + * @return + */ + public Object remove(int index) { + if (index < 0 || index > size - 1) { + throw new IndexOutOfBoundsException("索引越界"); + } + Object deleteData = elementData[index]; + if (index == size - 1){ + elementData[index] = null; + }else{ + int movedCount = size - index - 1; + System.arraycopy(elementData, index + 1, elementData, index, movedCount); + } + return deleteData; + } + + public int size() { + return size; + } + + public Iterator iterator() { + return null; + } + + /** + * 测试添加、移除、当前大小 + */ +// @Test + public void testArrayList() { + for (int j = 0; j < 3; j++) { + add(j); + } + add(2, 66); + + for (Object z : elementData) { + System.out.println(z); + } + + System.out.println(size()); + System.out.println(remove(3)); + } +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java new file mode 100644 index 0000000000..086e1cd342 --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java @@ -0,0 +1,7 @@ +package com.github.lqingchenl.coding2017.basic; + +public interface Iterator { + public boolean hasNext(); + public Object next(); + +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java new file mode 100644 index 0000000000..9583ef43de --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java @@ -0,0 +1,127 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; + +public class LinkedList implements List { + + private int size = 0; + + private Node head; + + public void add(Object o) { + if (head == null) { + head = new Node(o); + } else { + Node nextNode = head; + while (nextNode.next != null) { + nextNode = nextNode.next; + } + nextNode.next = new Node(o); + } + size++; + } + + public void add(int index, Object o) { + Node oldNode = getNode(index); + Node newNode = new Node(o); + newNode.next = oldNode.next; + oldNode.next = newNode; + size++; + } + + public Object get(int index) { + Node node = head; + for (int i = 0; i < index; i++) { + node = node.next; + } + return node.data; + } + + public Node getNode(int index) { + Node node = head; + for (int i = 0; i < index; i++) { + node = node.next; + } + return node; + } + + public Object remove(int index) { + if (index == 1){ + removeFirst(); + } + Node fatherNode = getNode(index -2); + Node oldNode = getNode(index -1); + fatherNode.next = oldNode.next; + size--; + + return oldNode.data; + } + + public int size() { + return size; + } + + public void addFirst(Object o) { + Node newNode = new Node(o); + newNode.next = head; + head = newNode; + size++; + } + + public void addLast(Object o) { + if (head == null){ + addFirst(o); + } + Node newNode = new Node(o); + Node lastNode = getNode(size -1); + lastNode.next = newNode; + size++; + } + + public Object removeFirst() { + Node oldHead = head; + Node secondNode = head.next; + head = secondNode; + size--; + return oldHead.data; + } + + public Object removeLast() { + if (size == 1){ + removeFirst(); + } + Object data = get(size - 1); + Node oldNode = getNode(size - 2); + oldNode.next = null; + size--; + return data; + } + + public Iterator iterator() { + return null; + } + + + private static class Node { + Object data; + Node next; + + public Node(Object data) { + this.data = data; + } + + } + + @Test + public void testLinkedList() { + add(1); + add(2); + add(3); + add(4); + remove(3); + addFirst(6); + for (int i = 0; i < size; i++) { + System.out.println("=="+get(i) +getNode(i)); + } + } +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java new file mode 100644 index 0000000000..d993812b9a --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java @@ -0,0 +1,9 @@ +package com.github.lqingchenl.coding2017.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(); +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java new file mode 100644 index 0000000000..c617de0929 --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java @@ -0,0 +1,39 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; + +public class Queue { + private LinkedList queue = new LinkedList(); + private int size; + + public void enQueue(Object o) { + queue.addLast(o); + size++; + } + + public Object deQueue() { + Object o = queue.removeFirst(); + size--; + return o; + } + + public boolean isEmpty() { + if (queue.size() == 0) + return true; + return false; + } + + public int size() { + return size; + } + + @Test + public void testStack() { + enQueue(1); + enQueue(2); + enQueue(3); + enQueue(4); + System.out.println(deQueue()); //出队列第一个元素 + System.out.println(size()); + } +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java new file mode 100644 index 0000000000..d3d6caa4dc --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java @@ -0,0 +1,46 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; + +public class Stack { + private ArrayList elementData = new ArrayList(); + private int size = 0; + + public void push(Object o) { + elementData.add(o); + size++; + } + + public Object pop() { + Object o = elementData.get(size - 1); + elementData.remove(size - 1); + size--; + return o; + } + + public Object peek() { + return elementData.get(size - 1); + } + + public boolean isEmpty() { + if (elementData.size() == 0) + return true; + return false; + } + + public int size() { + return size; + } + + @Test + public void testStack(){ + push(1); + push(2); + push(3); + push(4); + System.out.println(pop()); + System.out.println(peek()); + System.out.println(isEmpty()); + System.out.println(size()); + } +} From 87dcc87e565193446da285d0bf716c558a4cda4f Mon Sep 17 00:00:00 2001 From: Rong Huang <851113375@qq.com> Date: Sun, 26 Feb 2017 13:09:03 +0800 Subject: [PATCH 2/9] Revert "Master" --- .gitignore | 19 -- group02/727171008/.gitignore | 36 --- .../coding2017/basic/ArrayListTest.java | 15 -- .../coding2017/basic/BinaryTreeNode.java | 121 ---------- .../coding2017/basic/BinaryTreeNodeTest.java | 40 ---- .../HarryHook/coding2017/basic/Iterator.java | 7 - .../coding2017/basic/LinkedListTest.java | 93 -------- .../HarryHook/coding2017/basic/List.java | 14 -- .../HarryHook/coding2017/basic/ListTest.java | 122 ---------- .../coding2017/basic/MyArrayList.java | 167 ------------- .../coding2017/basic/MyLinkedList.java | 219 ------------------ .../HarryHook/coding2017/basic/MyQueue.java | 54 ----- .../HarryHook/coding2017/basic/MyStack.java | 59 ----- .../HarryHook/coding2017/basic/QueueTest.java | 33 --- .../HarryHook/coding2017/basic/StackTest.java | 40 ---- .../src/com/coding/basic/BinaryTreeNode.java | 93 +------- liuxin/src/com/coding/basic/insert.java | 37 --- 17 files changed, 6 insertions(+), 1163 deletions(-) delete mode 100644 group02/727171008/.gitignore delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java delete mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java delete mode 100644 liuxin/src/com/coding/basic/insert.java diff --git a/.gitignore b/.gitignore index ecebe0642e..ec55baf87d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,22 +14,3 @@ hs_err_pid* #ide config .metadata .recommenders -/bin/ -.idea/workspace.xml -.idea/dictionaries/myj.xml -.idea/ -.DS_Store -*.classpath -*.project -.settings -.project -.target -.classpath -**/.settings -**/.classpath -**/.eclipse -**/target/ -target/ -bin/ -.svn -*.iml \ No newline at end of file diff --git a/group02/727171008/.gitignore b/group02/727171008/.gitignore deleted file mode 100644 index 806b57f381..0000000000 --- a/group02/727171008/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -/bin/ -*.class - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -#ide config -.metadata -.recommenders -/bin/ -.idea/workspace.xml -.idea/dictionaries/myj.xml -.idea/ -.DS_Store -*.classpath -*.project -.settings -.project -.target -.classpath -**/.settings -**/.classpath -**/.eclipse -**/target/ -target/ -bin/ -.svn -*.iml \ No newline at end of file diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java deleted file mode 100644 index 0f22f6ba80..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -import org.junit.Before; -import com.github.HarryHook.coding2017.basic.MyArrayList; - - -public class ArrayListTest extends ListTest { - - @Before - public void setUpArrayList() - { - aList = new MyArrayList(); - } - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java deleted file mode 100644 index 2d962d9083..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Created by Harry 2017-2-23 10:50:39 - * 实现二叉树,并按二叉查找树插入节点 - * 能实现基本的功能,但测试时存在问题,传进去的数据为空 2017-2-2523:49:43 - */ -package com.github.HarryHook.coding2017.basic; - -public class BinaryTreeNode -{ - private Integer data; - private BinaryTreeNode left; - private BinaryTreeNode right; - - //中序遍历二叉树 - public void inOrder(BinaryTreeNode node) - { - if(node != null) - { - inOrder(node.left); - System.out.print(" " + node.data); - inOrder(node.right); - } - } - - //获取给节点的值 - public Integer getData() - { - return data; - } - //给一个节点赋值 - public void setData(Integer data) - { - this.data = data; - } - //获取左节点 - public BinaryTreeNode getLeft() - { - return left; - } - //指定左节点 - public void setLeft(BinaryTreeNode left) - { - this.left = left; - } - - //获取右节点 - public BinaryTreeNode getRight() - { - return right; - } - //指定右节点 - public void setRight(BinaryTreeNode right) - { - this.right = right; - } - - //在二叉树中插入一个节点,需要判断 - public BinaryTreeNode insert(Integer obj) - { - // 新增节点 - BinaryTreeNode newNode = new BinaryTreeNode(); - // 当前节点,保留根的值 - BinaryTreeNode current = this; - // 上个节点 - BinaryTreeNode parent = null; - // 如果根节点为空 - if (current.data == null) - { - newNode.setData(obj); - newNode.setLeft(null); - newNode.setRight(null); - return newNode; - }else - { - while (true) - { - parent = current; - if (obj < current.data) - { - current = current.left; - if (current == null) - { - newNode.setData(obj); - newNode.setLeft(null); - newNode.setRight(null); - parent.left = newNode; - return newNode; - } - } else - { - current = current.right; - if (current == null) - { - newNode.setData(obj); - newNode.setLeft(null); - newNode.setRight(null); - parent.right = newNode; - return newNode; - } - } - } - } - } - - public static void main(String[] args) - { - BinaryTreeNode BTN = new BinaryTreeNode(); - - BTN = BTN.insert(5); - System.out.print(BTN.getData() + " "); - System.out.print(BTN.insert(2).getData() + " "); - System.out.print(BTN.insert(1).getData() + " "); - System.out.print(BTN.insert(4).getData() + " "); - System.out.print(BTN.insert(6).getData() + " "); - System.out.print(BTN.insert(8).getData() + " "); - System.out.println(""); - System.out.println("中序遍历二叉树: "); - BTN.inOrder(BTN); - } - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java deleted file mode 100644 index 60d1979713..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -import static org.junit.Assert.assertEquals; - -import org.junit.Before; -import org.junit.Test; - -import com.github.HarryHook.coding2017.basic.BinaryTreeNode; - -public class BinaryTreeNodeTest -{ - - BinaryTreeNode binaryTreeNode; - - @Before - public void setUpBinaryTreeNode() - { - binaryTreeNode = new BinaryTreeNode(); - } - - @Test - public void testBinaryTreeNodeFunctional() - { - binaryTreeNode = binaryTreeNode.insert(4); - binaryTreeNode.insert(1); - binaryTreeNode.insert(3); - binaryTreeNode.insert(5); - binaryTreeNode.insert(2); - - assertEquals(true, 4 == binaryTreeNode.getData()); - assertEquals(true, 1 == binaryTreeNode.getLeft().getData()); - assertEquals(true, 5 == binaryTreeNode.getRight().getData()); - assertEquals(true, 3 == binaryTreeNode.getLeft().getRight().getData()); - assertEquals(true, 2 == binaryTreeNode.getLeft().getRight().getLeft().getData()); - - //节点为空 说明值没有插进去 - binaryTreeNode.inOrder(binaryTreeNode); - } - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java deleted file mode 100644 index 3fae84a22f..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -public interface Iterator -{ - public boolean hasNext(); - public Object next(); -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java deleted file mode 100644 index 7c754e37af..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -import static org.junit.Assert.*; -import org.junit.Before; -import org.junit.Test; -import com.github.HarryHook.coding2017.basic.MyLinkedList; - -public class LinkedListTest extends ListTest{ - - private MyLinkedList aLinkedList; - - @Before - public void setUpLinkedList() { - aList = new MyLinkedList(); - aLinkedList = new MyLinkedList(); - } - - @Test - public void testAddFirst() { - aLinkedList.addFirst(5); - assertEquals(5, aLinkedList.get(0)); - - aLinkedList.addFirst(6); - assertEquals(6, aLinkedList.get(0)); - assertEquals(5, aLinkedList.get(1)); - assertEquals(2, aLinkedList.size()); - } - - @Test - public void testAddLast() { - aLinkedList.addLast("hello"); - assertEquals("hello", aLinkedList.get(0)); - - aLinkedList.addLast("world"); - assertEquals("hello", aLinkedList.get(0)); - assertEquals("world", aLinkedList.get(1)); - assertEquals(2, aLinkedList.size()); - } - - @Test - public void testRemoveFirst() { - aLinkedList.addLast("hello"); - aLinkedList.addLast("world"); - - aLinkedList.removeFirst(); - assertEquals("world", aLinkedList.get(0)); - assertEquals(1, aLinkedList.size()); - - aLinkedList.removeFirst(); - assertEquals(0, aLinkedList.size()); - } - - @Test - public void testRemoveLast() { - aLinkedList.addFirst("world"); - aLinkedList.addFirst("hello"); - - aLinkedList.removeLast(); - assertEquals("hello", aLinkedList.get(0)); - assertEquals(1, aLinkedList.size()); - - aLinkedList.removeLast(); - assertEquals(0, aLinkedList.size()); - } - - @Test - public void testLinkedListFunctional() { - for (int i=1; i<4; i++) { - aLinkedList.add(i); // [1,2,3] - } - aLinkedList.remove(1); // [1,3] - - aLinkedList.add(1, 0); // [1,0,3] - for (int i=4; i<6; i++) { - aLinkedList.addFirst(i); // [5, 4, 1, 0, 3] - } - assertEquals(5, aLinkedList.size()); - assertEquals(5, aLinkedList.get(0)); - assertEquals(1, aLinkedList.get(2)); - assertEquals(0, aLinkedList.get(3)); - - aLinkedList.remove(3); // [5, 4, 1, 3] - assertEquals(3, aLinkedList.get(aLinkedList.size()-1)); - aLinkedList.removeLast(); // [5, 4, 1] - assertEquals(1, aLinkedList.get(aLinkedList.size()-1)); - aLinkedList.removeFirst(); // [4,1] - - assertEquals(4, aLinkedList.get(0)); - assertEquals(1, aLinkedList.get(1)); - assertEquals(2, aLinkedList.size()); - } - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java deleted file mode 100644 index f2299e8e83..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.github.HarryHook.coding2017.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(); - - public Iterator iterator(); -} - diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java deleted file mode 100644 index 92f84b687c..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -import static org.junit.Assert.*; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import com.github.HarryHook.coding2017.basic.Iterator; -import com.github.HarryHook.coding2017.basic.List; - -public class ListTest { - - protected static List aList; - - @Test - public void testFunctional() { - aList.add(1); - aList.add(2); - assertEquals(1, aList.get(0)); - assertEquals(2, aList.get(1)); - - aList.add(3); - aList.add(0, 5); - aList.add(2, 11); - assertEquals(5, aList.get(0)); - assertEquals(11, aList.get(2)); - - aList.add("hi"); - assertEquals("hi", aList.get(5)); - assertEquals(6, aList.size()); - - aList.remove(1); - assertEquals(11, aList.get(1)); - assertEquals(2, aList.get(2)); - - assertEquals(5, aList.size()); - } - - @Test - public void testAdd() { - for (int i=0; i<100; i++) - aList.add(i); - assertEquals(0, aList.get(0)); - assertEquals(99, aList.get(99)); - assertEquals(44, aList.get(44)); - } - - @Test - public void testRemove() { - aList.add(1); - aList.add(2); - aList.add(3); - int u = (Integer)aList.remove(2); - assertEquals(3, u); - assertEquals(2, aList.size()); - - aList.add(1, 5); - u = (Integer)aList.remove(0); - assertEquals(1, u); - assertEquals(5, aList.get(0)); - assertEquals(2, aList.get(1)); - assertEquals(2, aList.size()); - - aList.remove(0); - aList.remove(0); - assertEquals(0, aList.size()); - - - } - - @Test - public void testSize() { - for (int i=0; i<10; i++) - aList.add(i*2); - assertEquals(10, aList.size()); - } - - @Rule - public ExpectedException expectedEx = ExpectedException.none(); - - @Test - public void testException() { - expectedEx.expect(Exception.class); - aList.remove(1); - aList.add(3); - aList.add(2, 5); - expectedEx.expect(Exception.class); - } - - @Test - - public void testIterator() - { - Iterator it = aList.iterator(); - assertEquals(false, it.hasNext()); - - aList.add(1); - aList.add(2); - aList.add(3); - - it = aList.iterator(); - assertEquals(true, it.hasNext()); - assertEquals(1, it.next()); - assertEquals(2, it.next()); - assertEquals(3, it.next()); - assertEquals(false, it.hasNext()); - - aList.remove(1); - it = aList.iterator(); - assertEquals(true, it.hasNext()); - assertEquals(1, it.next()); - assertEquals(3, it.next()); - assertEquals(false, it.hasNext()); - - expectedEx.expect(Exception.class); - it.next(); - - } - - - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java deleted file mode 100644 index dbfd8aae19..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * created by Harry 2017-2-20 18:53:38 - * 实现简单的ArrayList,具有基本的增删改查功能 - */ -package com.github.HarryHook.coding2017.basic; - -import java.util.Arrays; -import java.util.NoSuchElementException; - -public class MyArrayList implements List -{ - private int size = 0; //数组元素个数 - - private Object[] elementData = new Object[10]; //初始化数组大小为10 - - //将元素添加到数组尾部 - public void add(Object o) - { //需要判断数组空间是否够用 - ensureCapacity(size + 1); - elementData[size++] = o; - } - //在指定位置添加元素 - public void add(int index, Object o) - { - //判断下标记是否越界 - if (index > size || index < 0) - throw new IndexOutOfBoundsException( - "Index: " + index + ", Size: " + size); - ensureCapacity(size + 1); - //判断当前位置是否有元素,没有元素添加到当前位置;若有,当前元素及之后元素向右移 - if(elementData[index] == null) - { - elementData[index] = o; - } - else - { - for(int i=elementData.length-1; i>index; i--) - { - elementData[i] = elementData[i-1]; - } - elementData[index] = o; - } - size++; - - /* - //判断索引位置是否正确 - if (index > size || index < 0) - throw new IndexOutOfBoundsException( - "Index: " + index + ", Size: " + size); - //扩容检测 - ensureCapacity(size+1); - /* - * 对源数组进行复制处理(位移),从index + 1到size-index。 - * 主要目的就是空出index位置供数据插入, - * 即向右移动当前位于该位置的元素以及所有后续元素。 - - System.arraycopy(elementData, index, elementData, index + 1, - size - index); - //在指定位置赋值 - elementData[index] = 0; - size++; - - */ - } - - public Object get(int index) - { - //若index超出size应该抛出异常 - if(index >= size) - throw new IndexOutOfBoundsException( "Index: " + index + ", Size: " + size); - return elementData[index]; - - } - - public Object remove(int index) - { //涉及到元素移位 - Object oldValue = elementData[index]; - for(int i=index; i oldCapacity) - { - //Object oldData[] = elementData; //防止copyof()执行的过程中新内存或者其他进程分配内存时占用旧内存 - int newCapacity = (oldCapacity * 3)/2 + 1; //增加50%+1 - if (newCapacity < minCapacity) - newCapacity = minCapacity; - // minCapacity is usually close to size, so this is a win: - elementData = Arrays.copyOf(elementData, newCapacity); - } - } - - //返回数组的大小 - public int size() - { - return size; - } - - public Iterator iterator() - { - return new MyArrayListIterator(); - } - - private class MyArrayListIterator implements Iterator - { - private int cursor = 0; //记录索引位置 - public boolean hasNext() - { - return cursor != size; - } - public Object next() - { - try { - Object next = get(cursor); - cursor++; - return next; - - } catch (IndexOutOfBoundsException e) - { - throw new NoSuchElementException(); - } - - } - } - - public static void main(String[] args) - { - MyArrayList myArrays = new MyArrayList(); - myArrays.add(3); - myArrays.add(0, 11); - myArrays.add(1, 2); - myArrays.add(3, 5); - myArrays.add(2, 1); - myArrays.add(7); - Print(myArrays); - - for(int i = 0; i < 19; i++) - myArrays.add(i, 55); - - System.out.println("获取指定位置元素: " + myArrays.get(2)); - System.out.println("删除指定位置元素: " + myArrays.remove(1)); - System.out.println("当前元素个数:" + myArrays.size()); - - Print(myArrays); - - } - public static void Print(MyArrayList myArrays) - { - Iterator it = myArrays.iterator(); - System.out.println("对链表中的元素进行打印:"); - while(it.hasNext()) - System.out.print(it.next() + " "); - System.out.println(""); - System.out.println("当前元素个数: " + myArrays.size()); - - } - -} - diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java deleted file mode 100644 index 5aeab57496..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * created by Harry 2017-2-21 14:43:41 - * 实现简单的LinkedList - */ - -package com.github.HarryHook.coding2017.basic; - -public class MyLinkedList implements List -{ - private Node head = null; //头指针 - private int size = 0; - private static class Node - { - Object data; - Node next; - } - public void add(Object o) - { - addLast(o); - } - //在指定位置添加元素 - public void add(int index , Object o) - { - - if (index > size || index < 0) - throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); - //存在插入头结点的情况 - if(index == 0) - addFirst(o); - else - { //即 index != 0 的情况 - // p保存待插入节点的前一节点,x指向要插入的节点 - Node x = head; - Node p = null; - int i = 0; - while(i < index) - { - p = x; - x = x.next; - i++; - } - Node n = new Node(); - p.next = n; - n.next = x; - n.data = o; - size++; - } - - } - //返回指定位置元素 - public Object get(int index) - { - Node x = head; - int i = 0; - while(i < index && x != null) - { - x = x.next; - i++; - } - return x.data; - } - - //移除指定位置节点 - public Object remove(int index) - { - if (index > size || index < 0) - throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); - //先判断是否是头节点 - if( index == 0) - { - return removeFirst(); - } - else - { - Node x = head; - Node pre = null; - int i = 0; - while(i < index) - { - pre = x; - x = x.next; - i++; - } - Object Data = pre.next.data; - pre.next = x.next; - x = null; - size--; - return Data; - } - - } - //头部添加节点 - public void addFirst(Object o) - { - Node n = new Node(); - n.next = head; - head = n; - n.data = o; - size++; - } - //尾部添加节点 - public void addLast(Object o) - { - if (head == null) - { - head = new Node(); - head.data = o; - } - else - { - Node x = head; - while(x.next != null) - { - x = x.next; - } - Node n = new Node(); - x.next = n; - n.next = null; - n.data = o; - } - size++; - } - //移除第一个节点 - public Object removeFirst() - { - Node n = head; - Object Data = n.data; - head = head.next; - n = null; - size--; - return Data; - } - - //移除最后一个节点 - //removeLast()方法存在bug - public Object removeLast() - { - Node x = head; - Node p = null; - if(x.next == null) - { - return removeFirst(); - } - else - { - while(x.next != null) - { - p = x; - x = x.next; - } - Object Data = x.data; - p.next = null; - x = null; //删除最后一个节点 - size--; - return Data; - } - } - public int size(){ - return size; - } - public Iterator iterator() - { - return new MyLinkedListIterator(); - } - private class MyLinkedListIterator implements Iterator - { - private int cursor = 0; //记录索引位置 - public boolean hasNext() - { - return cursor != size; - } - public Object next() - { - Object next = get(cursor); - cursor ++; - return next; - } - } - public static void main(String[] args) - { - MyLinkedList myList = new MyLinkedList(); - myList.add(3); - myList.add(5); - myList.add(0, 4); - myList.add(2, 7); - myList.addFirst(1); - myList.addLast(6); - - Print(myList); - - System.out.println("当前指定位置元素: " + myList.get(1)); - System.out.println("移除指定位置元素: " + myList.remove(4)); - Print(myList); - - System.out.println("移除第一个节点元素: " + myList.removeLast()); - Print(myList); - System.out.println("移除最后一个节点元素: " + myList.removeLast()); - Print(myList); - System.out.println("移除最后一个节点元素: " + myList.removeLast()); - Print(myList); - System.out.println("移除最后一个节点元素: " + myList.removeLast()); - Print(myList); - System.out.println("移除最后一个节点元素: " + myList.removeLast()); - Print(myList); - - } - public static void Print(MyLinkedList myList) - { - Iterator it = myList.iterator(); - System.out.println("对链表中的元素进行打印:"); - while(it.hasNext()) - System.out.print(it.next() + " "); - System.out.println(""); - System.out.println("当前元素个数: " + myList.size()); - System.out.println(""); - } - - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java deleted file mode 100644 index 9b713eaea9..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * created by Harry 2017-2-22 13:06:43 - * 实现简单的队列 - */ -package com.github.HarryHook.coding2017.basic; -import java.util.*; -public class MyQueue -{ - private MyArrayList elementData = new MyArrayList(); - private int size = 0; - //入队 - public void enQueue(Object o) - { - elementData.add(o); - size++; - } - //出队 - public Object deQueue() - { - if(isEmpty()) - throw new NoSuchElementException(); - Object Data = elementData.remove(0); - size--; - return Data; - } - //判断队列是否为空 - public boolean isEmpty() - { - return size() == 0; - } - //队列中元素个数 - public int size() - { - return size; - } - public static void main(String[] args) - { - MyQueue mq = new MyQueue(); - mq.enQueue(1); - mq.enQueue(2); - mq.enQueue(3); - mq.enQueue(4); - System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); - System.out.println("队列中元素个数: " + mq.size()); - System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); - System.out.println("队列中元素个数: " + mq.size()); - System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); - System.out.println("队列中元素个数: " + mq.size()); - System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); - System.out.println("队列中元素个数: " + mq.size()); - //System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); - //System.out.println("队列中元素个数: " + mq.size()); - } -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java deleted file mode 100644 index c7f87c04e6..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * created by Harry 2017-2-22 10:48:34 - * 实现简单的Stack - */ -package com.github.HarryHook.coding2017.basic; - -import java.util.*; - -public class MyStack -{ - private MyArrayList elementData = new MyArrayList(); - private int size = 0; - - //入栈操作 - public void push(Object o) - { - elementData.add(o); - size++; - } - //出栈操作 - public Object pop() - { - Object obj = peek(); - elementData.remove(size() - 1); - size--; - return obj; - } - //获取当前栈顶元素,不用出栈 - public Object peek() - { - if(isEmpty()) - throw new EmptyStackException(); - return elementData.get(size() - 1); - } - //判断栈是否为空 - public boolean isEmpty() - { - return size() == 0; - } - //返回栈内元素个数 - public int size(){ - return size; - } - - public static void main(String[] args) - { - MyStack ms = new MyStack(); - - ms.push(1); - ms.push(2); - ms.push(13); - System.out.println("当前栈顶元素是: " + ms.peek()); - System.out.println("出栈元素是: " + ms.pop()); - System.out.println("出栈元素是: " + ms.pop()); - ms.push(12); - System.out.println("出栈元素是: " + ms.pop()); - System.out.println("当前栈顶元素是: " + ms.peek()); - } -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java deleted file mode 100644 index 340f79d240..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -import static org.junit.Assert.*; -import org.junit.Before; -import org.junit.Test; -import com.github.HarryHook.coding2017.basic.MyQueue; - -public class QueueTest { - private MyQueue queue; - - @Before - public void setUpQueue() { - queue = new MyQueue(); - } - - @Test - public void testQueueFunctional() { - assertEquals(true, queue.isEmpty()); - queue.enQueue(4); - queue.enQueue(2); - assertEquals(2, queue.size()); - assertEquals(false, queue.isEmpty()); - - int i = (Integer)queue.deQueue(); - assertEquals(4, i); - i = (Integer)queue.deQueue(); - assertEquals(2, i); - - assertEquals(0, queue.size()); - assertEquals(true, queue.isEmpty()); - } - -} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java deleted file mode 100644 index 26160faef6..0000000000 --- a/group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.github.HarryHook.coding2017.basic; - -import static org.junit.Assert.*; - -import org.junit.Before; -import org.junit.Test; - -import com.github.HarryHook.coding2017.basic.MyStack; - -public class StackTest { - - private MyStack stack; - - @Before - public void setUpStack() { - stack = new MyStack(); - } - - @Test - public void testStackFunctional() { - assertEquals(true, stack.isEmpty()); - stack.push(4); - stack.push(2); - assertEquals(2, stack.size()); - assertEquals(false, stack.isEmpty()); - - int i = (Integer)stack.pop(); - assertEquals(2, i); - - i = (Integer)stack.peek(); - assertEquals(4, i); - - i = (Integer)stack.pop(); - assertEquals(4, i); - - assertEquals(0, stack.size()); - assertEquals(true, stack.isEmpty()); - } - -} diff --git a/liuxin/src/com/coding/basic/BinaryTreeNode.java b/liuxin/src/com/coding/basic/BinaryTreeNode.java index 736ae328c7..d7ac820192 100644 --- a/liuxin/src/com/coding/basic/BinaryTreeNode.java +++ b/liuxin/src/com/coding/basic/BinaryTreeNode.java @@ -1,51 +1,11 @@ package com.coding.basic; -public class BinaryTreeNode -{ - public static TreeNode root; //根节点 - public BinaryTreeNode() - { - this.root = null; - } - public TreeNode insert (int key) - { - // 新增节点 - TreeNode newNode = new TreeNode(key); - // 当前节点 - TreeNode current = root; - // 上个节点 - TreeNode parent = null; - // 如果根节点为空 - if (current == null) - { - root = newNode; - return newNode; - } - while (true) - { - parent = current; - if (key < current.value) - { - current = current.left; - if (current == null) - { - parent.left = newNode; - return newNode; - } - } else - { - current = current.right; - if (current == null) - { - parent.right = newNode; - return newNode; - } - } - } - } - -} - +public class BinaryTreeNode { + + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + public Object getData() { return data; } @@ -70,44 +30,3 @@ public BinaryTreeNode insert(Object o){ } } - -class TreeNode //树的节点 -{ - int value; - TreeNode left; - TreeNode right; - - public TreeNode(int value) - { - this.value = value; - left = null; - right = null; - } -} - -public class BinaryTreeNodeTest { - - public static void main(String[] args) { - BinaryTreeNode b = new BinaryTreeNode(); - b.insert(3);b.insert(8);b.insert(1);b.insert(4);b.insert(6); - b.insert(2);b.insert(10);b.insert(9);b.insert(20);b.insert(25); - - // 打印二叉树 - b.toString(b.root); - System.out.println(); - - // 是否存在节点值10 - TreeNode node01 = b.search(10); - System.out.println("是否存在节点值为10 => " + node01.value); - // 是否存在节点值11 - TreeNode node02 = b.search(11); - System.out.println("是否存在节点值为11 => " + node02); - - // 删除节点8 - TreeNode node03 = b.delete(8); - System.out.println("删除节点8 => " + node03.value); - b.toString(b.root); - - - } -} diff --git a/liuxin/src/com/coding/basic/insert.java b/liuxin/src/com/coding/basic/insert.java deleted file mode 100644 index 9ded2fcfac..0000000000 --- a/liuxin/src/com/coding/basic/insert.java +++ /dev/null @@ -1,37 +0,0 @@ - - //2017年2月24日17:02:55 - public BinaryTreeNode insert (Integer key) - { - // 新增节点 - BinaryTreeNode newNode = new BinaryTreeNode(key); - // 当前节点 - BinaryTreeNode current = root; - // 上个节点 - BinaryTreeNode parent = null; - // 如果根节点为空 - if (current == null) { - root = newNode; - return newNode; - } - while (true) - { - parent = current; - if (key < current.value) - { - current = current.left; - if (current == null) - { - parent.left = newNode; - return newNode; - } - } else - { - current = current.right; - if (current == null) - { - parent.right = newNode; - return newNode; - } - } - } - } From 571f8a931c96344fdb0f858b4370f64317b21f7d Mon Sep 17 00:00:00 2001 From: lqingchenl <953840070@qq.com> Date: Sun, 26 Feb 2017 13:22:00 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/ArrayList.java | 42 ++---- .../coding2017/basic/ArrayListTest.java | 69 ++++++++++ .../coding2017/basic/LinkedList.java | 37 ++---- .../coding2017/basic/LinkedListTest.java | 125 ++++++++++++++++++ .../lqingchenl/coding2017/basic/Queue.java | 11 -- .../coding2017/basic/QueueTest.java | 57 ++++++++ .../lqingchenl/coding2017/basic/Stack.java | 13 -- .../coding2017/basic/StackTest.java | 64 +++++++++ 8 files changed, 341 insertions(+), 77 deletions(-) create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java create mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java index 1019222a9e..286c039e06 100644 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java @@ -1,8 +1,5 @@ package com.github.lqingchenl.coding2017.basic; -import com.github.lqingchenl.coding2017.basic.List; -import org.junit.Test; - import java.util.Arrays; @@ -31,21 +28,21 @@ public void add(Object o) { * @param o */ public void add(int index, Object o) { - size = size + 1; + if (get(index - 1) == null) { //原来为空,添加到指定位置 + add(o); + return; + } + size++; if (size >= elementData.length) { elementData = Arrays.copyOf(elementData, elementData.length * 2); } - // 将指定索引出后面的元素集体向后移动一格 -// for (int i = size; i >= index; i--) { -// elementData[i + 1] = elementData[i]; -// } - System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = o; } /** * 获取元素 + * * @param index * @return */ @@ -59,20 +56,22 @@ public Object get(int index) { /** * 移除元素 + * * @param index * @return */ public Object remove(int index) { - if (index < 0 || index > size - 1) { + if (index < 0 || index > size) { throw new IndexOutOfBoundsException("索引越界"); } Object deleteData = elementData[index]; - if (index == size - 1){ + if (index == size - 1) { elementData[index] = null; - }else{ - int movedCount = size - index - 1; + } else { + int movedCount = size - index; System.arraycopy(elementData, index + 1, elementData, index, movedCount); } + size--; return deleteData; } @@ -84,21 +83,4 @@ public Iterator iterator() { return null; } - /** - * 测试添加、移除、当前大小 - */ -// @Test - public void testArrayList() { - for (int j = 0; j < 3; j++) { - add(j); - } - add(2, 66); - - for (Object z : elementData) { - System.out.println(z); - } - - System.out.println(size()); - System.out.println(remove(3)); - } } diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java new file mode 100644 index 0000000000..ebf29cf406 --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java @@ -0,0 +1,69 @@ +package com.github.lqingchenl.coding2017.basic; + +import com.github.lqingchenl.coding2017.basic.ArrayList; +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; + +/** + * ArrayList Tester. + */ +public class ArrayListTest { + + private static ArrayList testArray = new ArrayList(); + + /** + * Method: add(Object o) + */ + @Test + public void testAddO() throws Exception { + testArray.add(1); + testArray.add(2); + assertEquals(1, testArray.get(0)); + assertEquals(2, testArray.get(1)); + } + + /** + * Method: add(int index, Object o) + */ + @Test + public void testAddForIndexO() throws Exception { + testArray.add(1, 1); + testArray.add(2, 2); + assertEquals(1, testArray.get(0)); + assertEquals(2, testArray.get(1)); + } + + /** + * Method: get(int index) + */ + @Test + public void testGet() throws Exception { + testArray.add(1); + assertEquals(1, testArray.get(0)); + } + + /** + * Method: remove(int index) + */ + @Test + public void testRemove() throws Exception { + testArray.add(1); + testArray.add(2); + assertEquals(1, testArray.remove(0)); + assertEquals(2, testArray.remove(0)); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testArray.add(1); + testArray.add(2); + assertEquals(2, testArray.size()); + } + +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java index 9583ef43de..316cad2ee5 100644 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java @@ -1,7 +1,5 @@ package com.github.lqingchenl.coding2017.basic; -import org.junit.Test; - public class LinkedList implements List { private int size = 0; @@ -22,7 +20,11 @@ public void add(Object o) { } public void add(int index, Object o) { - Node oldNode = getNode(index); + if (index == 0) { + addFirst(o); + return; + } + Node oldNode = getNode(index - 1); Node newNode = new Node(o); newNode.next = oldNode.next; oldNode.next = newNode; @@ -46,11 +48,11 @@ public Node getNode(int index) { } public Object remove(int index) { - if (index == 1){ - removeFirst(); + if (index == 1) { + return removeFirst(); } - Node fatherNode = getNode(index -2); - Node oldNode = getNode(index -1); + Node fatherNode = getNode(index - 2); + Node oldNode = getNode(index - 1); fatherNode.next = oldNode.next; size--; @@ -69,11 +71,12 @@ public void addFirst(Object o) { } public void addLast(Object o) { - if (head == null){ + if (head == null) { addFirst(o); + return; } Node newNode = new Node(o); - Node lastNode = getNode(size -1); + Node lastNode = getNode(size - 1); lastNode.next = newNode; size++; } @@ -87,8 +90,8 @@ public Object removeFirst() { } public Object removeLast() { - if (size == 1){ - removeFirst(); + if (size == 1) { + return removeFirst(); } Object data = get(size - 1); Node oldNode = getNode(size - 2); @@ -112,16 +115,4 @@ public Node(Object data) { } - @Test - public void testLinkedList() { - add(1); - add(2); - add(3); - add(4); - remove(3); - addFirst(6); - for (int i = 0; i < size; i++) { - System.out.println("=="+get(i) +getNode(i)); - } - } } diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java new file mode 100644 index 0000000000..0ef6290d28 --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java @@ -0,0 +1,125 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class LinkedListTest { + + private static LinkedList testLinkedList = new LinkedList(); + + /** + * Method: add(Object o) + */ + @Test + public void testAdd() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(1, testLinkedList.get(0)); + assertEquals(2, testLinkedList.get(1)); + } + + /** + * Method: add(int index, Object o) + */ + @Test + public void testAddForIndex() throws Exception { + testLinkedList.add(0, 0); + testLinkedList.add(1, 1); + testLinkedList.add(2, 2); + assertEquals(0, testLinkedList.get(0)); + assertEquals(1, testLinkedList.get(1)); + assertEquals(2, testLinkedList.get(2)); + } + + /** + * Method: get(int index) + */ + @Test + public void testGet() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(1, testLinkedList.get(0)); + assertEquals(2, testLinkedList.get(1)); + } + + /** + * Method: getNode(int index) + */ + @Test + public void testGetNode() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertNotNull(testLinkedList.get(0)); + } + + /** + * Method: remove(int index) + */ + @Test + public void testRemove() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(1, testLinkedList.get(0)); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(2, testLinkedList.size()); + } + + /** + * Method: addFirst(Object o) + */ + @Test + public void testAddFirst() throws Exception { + testLinkedList.addFirst(1); + assertEquals(1, testLinkedList.get(0)); + } + + /** + * Method: addLast(Object o) + */ + @Test + public void testAddLast() throws Exception { + testLinkedList.addLast(1); + assertEquals(1, testLinkedList.get(0)); + } + + /** + * Method: removeFirst() + */ + @Test + public void testRemoveFirst() throws Exception { + testLinkedList.addFirst(1); + testLinkedList.addFirst(2); + assertEquals(2, testLinkedList.removeFirst()); + assertEquals(1, testLinkedList.removeFirst()); + } + + /** + * Method: removeLast() + */ + @Test + public void testRemoveLast() throws Exception { + testLinkedList.addFirst(1); + assertEquals(1, testLinkedList.removeLast()); + } + + /** + * Method: iterator() + */ + @Test + public void testIterator() throws Exception { + } + + +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java index c617de0929..eb7f7e3cb0 100644 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java @@ -1,7 +1,5 @@ package com.github.lqingchenl.coding2017.basic; -import org.junit.Test; - public class Queue { private LinkedList queue = new LinkedList(); private int size; @@ -27,13 +25,4 @@ public int size() { return size; } - @Test - public void testStack() { - enQueue(1); - enQueue(2); - enQueue(3); - enQueue(4); - System.out.println(deQueue()); //出队列第一个元素 - System.out.println(size()); - } } diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java new file mode 100644 index 0000000000..9b26b3cdcf --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java @@ -0,0 +1,57 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; + +/** + * Queue Tester. + */ +public class QueueTest { + + private static Queue testQueue = new Queue(); + + /** + * Method: enQueue(Object o) + */ + @Test + public void testEnQueue() throws Exception { + testQueue.enQueue(1); + assertEquals(1, testQueue.deQueue()); + } + + /** + * Method: deQueue() + */ + @Test + public void testDeQueue() throws Exception { + testQueue.enQueue(1); + testQueue.enQueue(2); + assertEquals(1, testQueue.deQueue()); + assertEquals(2, testQueue.deQueue()); + } + + /** + * Method: isEmpty() + */ + @Test + public void testIsEmpty() throws Exception { + testQueue.enQueue(1); + assertEquals(1, testQueue.deQueue()); + assertEquals(true, testQueue.isEmpty()); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testQueue.enQueue(1); + testQueue.enQueue(2); + assertEquals(2, testQueue.size()); + } + + +} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java index d3d6caa4dc..8b25283b40 100644 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java @@ -1,7 +1,5 @@ package com.github.lqingchenl.coding2017.basic; -import org.junit.Test; - public class Stack { private ArrayList elementData = new ArrayList(); private int size = 0; @@ -32,15 +30,4 @@ public int size() { return size; } - @Test - public void testStack(){ - push(1); - push(2); - push(3); - push(4); - System.out.println(pop()); - System.out.println(peek()); - System.out.println(isEmpty()); - System.out.println(size()); - } } diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java new file mode 100644 index 0000000000..b2d4935c4e --- /dev/null +++ b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java @@ -0,0 +1,64 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; + +/** + * Stack Tester. + */ +public class StackTest { + + private static Stack testStack = new Stack(); + + /** + * Method: push(Object o) + */ + @Test + public void testPush() throws Exception { + testStack.push(1); + assertEquals(1, testStack.peek()); + } + + /** + * Method: pop() + */ + @Test + public void testPop() throws Exception { + testStack.push(1); + assertEquals(1, testStack.pop()); + } + + /** + * Method: peek() + */ + @Test + public void testPeek() throws Exception { + testStack.push(1); + assertEquals(1, testStack.peek()); + testStack.push(2); + assertEquals(2, testStack.peek()); + } + + /** + * Method: isEmpty() + */ + @Test + public void testIsEmpty() throws Exception { + testStack.push(1); + assertEquals(false, testStack.isEmpty()); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testStack.push(1); + testStack.push(2); + assertEquals(2, testStack.size()); + } + +} From abd1eca4700b2c234193ca77dbf0fe5692b74acf Mon Sep 17 00:00:00 2001 From: lqingchenl <953840070@qq.com> Date: Sun, 26 Feb 2017 13:36:54 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/ArrayList.java | 86 ------------ .../coding2017/basic/ArrayListTest.java | 69 ---------- .../lqingchenl/coding2017/basic/Iterator.java | 7 - .../coding2017/basic/LinkedList.java | 118 ----------------- .../coding2017/basic/LinkedListTest.java | 125 ------------------ .../lqingchenl/coding2017/basic/List.java | 9 -- .../lqingchenl/coding2017/basic/Queue.java | 28 ---- .../coding2017/basic/QueueTest.java | 57 -------- .../lqingchenl/coding2017/basic/Stack.java | 33 ----- .../coding2017/basic/StackTest.java | 64 --------- 10 files changed, 596 deletions(-) delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java delete mode 100644 group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java deleted file mode 100644 index 286c039e06..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayList.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -import java.util.Arrays; - - -public class ArrayList implements List { - private int size = 0; - - private Object[] elementData = new Object[3]; - - /** - * 添加一个元素 - * - * @param o - */ - public void add(Object o) { - elementData[size] = o; - size = size + 1; - if (size >= elementData.length) { - elementData = Arrays.copyOf(elementData, elementData.length * 2); - } - } - - /** - * 往固定位置添加一个元素 - * - * @param index - * @param o - */ - public void add(int index, Object o) { - if (get(index - 1) == null) { //原来为空,添加到指定位置 - add(o); - return; - } - size++; - if (size >= elementData.length) { - elementData = Arrays.copyOf(elementData, elementData.length * 2); - } - System.arraycopy(elementData, index, elementData, index + 1, size - index); - elementData[index] = o; - } - - /** - * 获取元素 - * - * @param index - * @return - */ - public Object get(int index) { - - if (index < 0 || index > size) { - throw new IndexOutOfBoundsException("索引越界"); - } - return elementData[index]; - } - - /** - * 移除元素 - * - * @param index - * @return - */ - public Object remove(int index) { - if (index < 0 || index > size) { - throw new IndexOutOfBoundsException("索引越界"); - } - Object deleteData = elementData[index]; - if (index == size - 1) { - elementData[index] = null; - } else { - int movedCount = size - index; - System.arraycopy(elementData, index + 1, elementData, index, movedCount); - } - size--; - return deleteData; - } - - public int size() { - return size; - } - - public Iterator iterator() { - return null; - } - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java deleted file mode 100644 index ebf29cf406..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -import com.github.lqingchenl.coding2017.basic.ArrayList; -import org.junit.Test; -import org.junit.Before; -import org.junit.After; - -import static org.junit.Assert.assertEquals; - -/** - * ArrayList Tester. - */ -public class ArrayListTest { - - private static ArrayList testArray = new ArrayList(); - - /** - * Method: add(Object o) - */ - @Test - public void testAddO() throws Exception { - testArray.add(1); - testArray.add(2); - assertEquals(1, testArray.get(0)); - assertEquals(2, testArray.get(1)); - } - - /** - * Method: add(int index, Object o) - */ - @Test - public void testAddForIndexO() throws Exception { - testArray.add(1, 1); - testArray.add(2, 2); - assertEquals(1, testArray.get(0)); - assertEquals(2, testArray.get(1)); - } - - /** - * Method: get(int index) - */ - @Test - public void testGet() throws Exception { - testArray.add(1); - assertEquals(1, testArray.get(0)); - } - - /** - * Method: remove(int index) - */ - @Test - public void testRemove() throws Exception { - testArray.add(1); - testArray.add(2); - assertEquals(1, testArray.remove(0)); - assertEquals(2, testArray.remove(0)); - } - - /** - * Method: size() - */ - @Test - public void testSize() throws Exception { - testArray.add(1); - testArray.add(2); - assertEquals(2, testArray.size()); - } - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java deleted file mode 100644 index 086e1cd342..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Iterator.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -public interface Iterator { - public boolean hasNext(); - public Object next(); - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java deleted file mode 100644 index 316cad2ee5..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedList.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -public class LinkedList implements List { - - private int size = 0; - - private Node head; - - public void add(Object o) { - if (head == null) { - head = new Node(o); - } else { - Node nextNode = head; - while (nextNode.next != null) { - nextNode = nextNode.next; - } - nextNode.next = new Node(o); - } - size++; - } - - public void add(int index, Object o) { - if (index == 0) { - addFirst(o); - return; - } - Node oldNode = getNode(index - 1); - Node newNode = new Node(o); - newNode.next = oldNode.next; - oldNode.next = newNode; - size++; - } - - public Object get(int index) { - Node node = head; - for (int i = 0; i < index; i++) { - node = node.next; - } - return node.data; - } - - public Node getNode(int index) { - Node node = head; - for (int i = 0; i < index; i++) { - node = node.next; - } - return node; - } - - public Object remove(int index) { - if (index == 1) { - return removeFirst(); - } - Node fatherNode = getNode(index - 2); - Node oldNode = getNode(index - 1); - fatherNode.next = oldNode.next; - size--; - - return oldNode.data; - } - - public int size() { - return size; - } - - public void addFirst(Object o) { - Node newNode = new Node(o); - newNode.next = head; - head = newNode; - size++; - } - - public void addLast(Object o) { - if (head == null) { - addFirst(o); - return; - } - Node newNode = new Node(o); - Node lastNode = getNode(size - 1); - lastNode.next = newNode; - size++; - } - - public Object removeFirst() { - Node oldHead = head; - Node secondNode = head.next; - head = secondNode; - size--; - return oldHead.data; - } - - public Object removeLast() { - if (size == 1) { - return removeFirst(); - } - Object data = get(size - 1); - Node oldNode = getNode(size - 2); - oldNode.next = null; - size--; - return data; - } - - public Iterator iterator() { - return null; - } - - - private static class Node { - Object data; - Node next; - - public Node(Object data) { - this.data = data; - } - - } - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java deleted file mode 100644 index 0ef6290d28..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -import org.junit.Test; -import org.junit.Before; -import org.junit.After; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class LinkedListTest { - - private static LinkedList testLinkedList = new LinkedList(); - - /** - * Method: add(Object o) - */ - @Test - public void testAdd() throws Exception { - testLinkedList.add(1); - testLinkedList.add(2); - assertEquals(1, testLinkedList.get(0)); - assertEquals(2, testLinkedList.get(1)); - } - - /** - * Method: add(int index, Object o) - */ - @Test - public void testAddForIndex() throws Exception { - testLinkedList.add(0, 0); - testLinkedList.add(1, 1); - testLinkedList.add(2, 2); - assertEquals(0, testLinkedList.get(0)); - assertEquals(1, testLinkedList.get(1)); - assertEquals(2, testLinkedList.get(2)); - } - - /** - * Method: get(int index) - */ - @Test - public void testGet() throws Exception { - testLinkedList.add(1); - testLinkedList.add(2); - assertEquals(1, testLinkedList.get(0)); - assertEquals(2, testLinkedList.get(1)); - } - - /** - * Method: getNode(int index) - */ - @Test - public void testGetNode() throws Exception { - testLinkedList.add(1); - testLinkedList.add(2); - assertNotNull(testLinkedList.get(0)); - } - - /** - * Method: remove(int index) - */ - @Test - public void testRemove() throws Exception { - testLinkedList.add(1); - testLinkedList.add(2); - assertEquals(1, testLinkedList.get(0)); - } - - /** - * Method: size() - */ - @Test - public void testSize() throws Exception { - testLinkedList.add(1); - testLinkedList.add(2); - assertEquals(2, testLinkedList.size()); - } - - /** - * Method: addFirst(Object o) - */ - @Test - public void testAddFirst() throws Exception { - testLinkedList.addFirst(1); - assertEquals(1, testLinkedList.get(0)); - } - - /** - * Method: addLast(Object o) - */ - @Test - public void testAddLast() throws Exception { - testLinkedList.addLast(1); - assertEquals(1, testLinkedList.get(0)); - } - - /** - * Method: removeFirst() - */ - @Test - public void testRemoveFirst() throws Exception { - testLinkedList.addFirst(1); - testLinkedList.addFirst(2); - assertEquals(2, testLinkedList.removeFirst()); - assertEquals(1, testLinkedList.removeFirst()); - } - - /** - * Method: removeLast() - */ - @Test - public void testRemoveLast() throws Exception { - testLinkedList.addFirst(1); - assertEquals(1, testLinkedList.removeLast()); - } - - /** - * Method: iterator() - */ - @Test - public void testIterator() throws Exception { - } - - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java deleted file mode 100644 index d993812b9a..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/List.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.lqingchenl.coding2017.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(); -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java deleted file mode 100644 index eb7f7e3cb0..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Queue.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -public class Queue { - private LinkedList queue = new LinkedList(); - private int size; - - public void enQueue(Object o) { - queue.addLast(o); - size++; - } - - public Object deQueue() { - Object o = queue.removeFirst(); - size--; - return o; - } - - public boolean isEmpty() { - if (queue.size() == 0) - return true; - return false; - } - - public int size() { - return size; - } - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java deleted file mode 100644 index 9b26b3cdcf..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/QueueTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -import org.junit.Test; -import org.junit.Before; -import org.junit.After; - -import static org.junit.Assert.assertEquals; - -/** - * Queue Tester. - */ -public class QueueTest { - - private static Queue testQueue = new Queue(); - - /** - * Method: enQueue(Object o) - */ - @Test - public void testEnQueue() throws Exception { - testQueue.enQueue(1); - assertEquals(1, testQueue.deQueue()); - } - - /** - * Method: deQueue() - */ - @Test - public void testDeQueue() throws Exception { - testQueue.enQueue(1); - testQueue.enQueue(2); - assertEquals(1, testQueue.deQueue()); - assertEquals(2, testQueue.deQueue()); - } - - /** - * Method: isEmpty() - */ - @Test - public void testIsEmpty() throws Exception { - testQueue.enQueue(1); - assertEquals(1, testQueue.deQueue()); - assertEquals(true, testQueue.isEmpty()); - } - - /** - * Method: size() - */ - @Test - public void testSize() throws Exception { - testQueue.enQueue(1); - testQueue.enQueue(2); - assertEquals(2, testQueue.size()); - } - - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java deleted file mode 100644 index 8b25283b40..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/Stack.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -public class Stack { - private ArrayList elementData = new ArrayList(); - private int size = 0; - - public void push(Object o) { - elementData.add(o); - size++; - } - - public Object pop() { - Object o = elementData.get(size - 1); - elementData.remove(size - 1); - size--; - return o; - } - - public Object peek() { - return elementData.get(size - 1); - } - - public boolean isEmpty() { - if (elementData.size() == 0) - return true; - return false; - } - - public int size() { - return size; - } - -} diff --git a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java b/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java deleted file mode 100644 index b2d4935c4e..0000000000 --- a/group02/953840070Learning/src/com/github/lqingchenl/coding2017/basic/StackTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.github.lqingchenl.coding2017.basic; - -import org.junit.Test; -import org.junit.Before; -import org.junit.After; - -import static org.junit.Assert.assertEquals; - -/** - * Stack Tester. - */ -public class StackTest { - - private static Stack testStack = new Stack(); - - /** - * Method: push(Object o) - */ - @Test - public void testPush() throws Exception { - testStack.push(1); - assertEquals(1, testStack.peek()); - } - - /** - * Method: pop() - */ - @Test - public void testPop() throws Exception { - testStack.push(1); - assertEquals(1, testStack.pop()); - } - - /** - * Method: peek() - */ - @Test - public void testPeek() throws Exception { - testStack.push(1); - assertEquals(1, testStack.peek()); - testStack.push(2); - assertEquals(2, testStack.peek()); - } - - /** - * Method: isEmpty() - */ - @Test - public void testIsEmpty() throws Exception { - testStack.push(1); - assertEquals(false, testStack.isEmpty()); - } - - /** - * Method: size() - */ - @Test - public void testSize() throws Exception { - testStack.push(1); - testStack.push(2); - assertEquals(2, testStack.size()); - } - -} From 5cc9d7c19b9ba1f7a4d50ceb3f6300b9e55a9dd9 Mon Sep 17 00:00:00 2001 From: lqingchenl <953840070@qq.com> Date: Sun, 26 Feb 2017 13:45:09 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/ArrayList.java | 86 ++++++++++++ .../coding2017/basic/ArrayListTest.java | 69 ++++++++++ .../lqingchenl/coding2017/basic/Iterator.java | 7 + .../coding2017/basic/LinkedList.java | 118 +++++++++++++++++ .../coding2017/basic/LinkedListTest.java | 125 ++++++++++++++++++ .../lqingchenl/coding2017/basic/List.java | 9 ++ .../lqingchenl/coding2017/basic/Queue.java | 28 ++++ .../coding2017/basic/QueueTest.java | 57 ++++++++ .../lqingchenl/coding2017/basic/Stack.java | 33 +++++ .../coding2017/basic/StackTest.java | 64 +++++++++ 10 files changed, 596 insertions(+) create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayList.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/Iterator.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedList.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/List.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/Queue.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/QueueTest.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/Stack.java create mode 100644 group02/953840070/src/com/github/lqingchenl/coding2017/basic/StackTest.java diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayList.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayList.java new file mode 100644 index 0000000000..286c039e06 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayList.java @@ -0,0 +1,86 @@ +package com.github.lqingchenl.coding2017.basic; + +import java.util.Arrays; + + +public class ArrayList implements List { + private int size = 0; + + private Object[] elementData = new Object[3]; + + /** + * 添加一个元素 + * + * @param o + */ + public void add(Object o) { + elementData[size] = o; + size = size + 1; + if (size >= elementData.length) { + elementData = Arrays.copyOf(elementData, elementData.length * 2); + } + } + + /** + * 往固定位置添加一个元素 + * + * @param index + * @param o + */ + public void add(int index, Object o) { + if (get(index - 1) == null) { //原来为空,添加到指定位置 + add(o); + return; + } + size++; + if (size >= elementData.length) { + elementData = Arrays.copyOf(elementData, elementData.length * 2); + } + System.arraycopy(elementData, index, elementData, index + 1, size - index); + elementData[index] = o; + } + + /** + * 获取元素 + * + * @param index + * @return + */ + public Object get(int index) { + + if (index < 0 || index > size) { + throw new IndexOutOfBoundsException("索引越界"); + } + return elementData[index]; + } + + /** + * 移除元素 + * + * @param index + * @return + */ + public Object remove(int index) { + if (index < 0 || index > size) { + throw new IndexOutOfBoundsException("索引越界"); + } + Object deleteData = elementData[index]; + if (index == size - 1) { + elementData[index] = null; + } else { + int movedCount = size - index; + System.arraycopy(elementData, index + 1, elementData, index, movedCount); + } + size--; + return deleteData; + } + + public int size() { + return size; + } + + public Iterator iterator() { + return null; + } + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java new file mode 100644 index 0000000000..ebf29cf406 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/ArrayListTest.java @@ -0,0 +1,69 @@ +package com.github.lqingchenl.coding2017.basic; + +import com.github.lqingchenl.coding2017.basic.ArrayList; +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; + +/** + * ArrayList Tester. + */ +public class ArrayListTest { + + private static ArrayList testArray = new ArrayList(); + + /** + * Method: add(Object o) + */ + @Test + public void testAddO() throws Exception { + testArray.add(1); + testArray.add(2); + assertEquals(1, testArray.get(0)); + assertEquals(2, testArray.get(1)); + } + + /** + * Method: add(int index, Object o) + */ + @Test + public void testAddForIndexO() throws Exception { + testArray.add(1, 1); + testArray.add(2, 2); + assertEquals(1, testArray.get(0)); + assertEquals(2, testArray.get(1)); + } + + /** + * Method: get(int index) + */ + @Test + public void testGet() throws Exception { + testArray.add(1); + assertEquals(1, testArray.get(0)); + } + + /** + * Method: remove(int index) + */ + @Test + public void testRemove() throws Exception { + testArray.add(1); + testArray.add(2); + assertEquals(1, testArray.remove(0)); + assertEquals(2, testArray.remove(0)); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testArray.add(1); + testArray.add(2); + assertEquals(2, testArray.size()); + } + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Iterator.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Iterator.java new file mode 100644 index 0000000000..086e1cd342 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Iterator.java @@ -0,0 +1,7 @@ +package com.github.lqingchenl.coding2017.basic; + +public interface Iterator { + public boolean hasNext(); + public Object next(); + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedList.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedList.java new file mode 100644 index 0000000000..316cad2ee5 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedList.java @@ -0,0 +1,118 @@ +package com.github.lqingchenl.coding2017.basic; + +public class LinkedList implements List { + + private int size = 0; + + private Node head; + + public void add(Object o) { + if (head == null) { + head = new Node(o); + } else { + Node nextNode = head; + while (nextNode.next != null) { + nextNode = nextNode.next; + } + nextNode.next = new Node(o); + } + size++; + } + + public void add(int index, Object o) { + if (index == 0) { + addFirst(o); + return; + } + Node oldNode = getNode(index - 1); + Node newNode = new Node(o); + newNode.next = oldNode.next; + oldNode.next = newNode; + size++; + } + + public Object get(int index) { + Node node = head; + for (int i = 0; i < index; i++) { + node = node.next; + } + return node.data; + } + + public Node getNode(int index) { + Node node = head; + for (int i = 0; i < index; i++) { + node = node.next; + } + return node; + } + + public Object remove(int index) { + if (index == 1) { + return removeFirst(); + } + Node fatherNode = getNode(index - 2); + Node oldNode = getNode(index - 1); + fatherNode.next = oldNode.next; + size--; + + return oldNode.data; + } + + public int size() { + return size; + } + + public void addFirst(Object o) { + Node newNode = new Node(o); + newNode.next = head; + head = newNode; + size++; + } + + public void addLast(Object o) { + if (head == null) { + addFirst(o); + return; + } + Node newNode = new Node(o); + Node lastNode = getNode(size - 1); + lastNode.next = newNode; + size++; + } + + public Object removeFirst() { + Node oldHead = head; + Node secondNode = head.next; + head = secondNode; + size--; + return oldHead.data; + } + + public Object removeLast() { + if (size == 1) { + return removeFirst(); + } + Object data = get(size - 1); + Node oldNode = getNode(size - 2); + oldNode.next = null; + size--; + return data; + } + + public Iterator iterator() { + return null; + } + + + private static class Node { + Object data; + Node next; + + public Node(Object data) { + this.data = data; + } + + } + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java new file mode 100644 index 0000000000..0ef6290d28 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/LinkedListTest.java @@ -0,0 +1,125 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class LinkedListTest { + + private static LinkedList testLinkedList = new LinkedList(); + + /** + * Method: add(Object o) + */ + @Test + public void testAdd() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(1, testLinkedList.get(0)); + assertEquals(2, testLinkedList.get(1)); + } + + /** + * Method: add(int index, Object o) + */ + @Test + public void testAddForIndex() throws Exception { + testLinkedList.add(0, 0); + testLinkedList.add(1, 1); + testLinkedList.add(2, 2); + assertEquals(0, testLinkedList.get(0)); + assertEquals(1, testLinkedList.get(1)); + assertEquals(2, testLinkedList.get(2)); + } + + /** + * Method: get(int index) + */ + @Test + public void testGet() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(1, testLinkedList.get(0)); + assertEquals(2, testLinkedList.get(1)); + } + + /** + * Method: getNode(int index) + */ + @Test + public void testGetNode() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertNotNull(testLinkedList.get(0)); + } + + /** + * Method: remove(int index) + */ + @Test + public void testRemove() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(1, testLinkedList.get(0)); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testLinkedList.add(1); + testLinkedList.add(2); + assertEquals(2, testLinkedList.size()); + } + + /** + * Method: addFirst(Object o) + */ + @Test + public void testAddFirst() throws Exception { + testLinkedList.addFirst(1); + assertEquals(1, testLinkedList.get(0)); + } + + /** + * Method: addLast(Object o) + */ + @Test + public void testAddLast() throws Exception { + testLinkedList.addLast(1); + assertEquals(1, testLinkedList.get(0)); + } + + /** + * Method: removeFirst() + */ + @Test + public void testRemoveFirst() throws Exception { + testLinkedList.addFirst(1); + testLinkedList.addFirst(2); + assertEquals(2, testLinkedList.removeFirst()); + assertEquals(1, testLinkedList.removeFirst()); + } + + /** + * Method: removeLast() + */ + @Test + public void testRemoveLast() throws Exception { + testLinkedList.addFirst(1); + assertEquals(1, testLinkedList.removeLast()); + } + + /** + * Method: iterator() + */ + @Test + public void testIterator() throws Exception { + } + + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/List.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/List.java new file mode 100644 index 0000000000..d993812b9a --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/List.java @@ -0,0 +1,9 @@ +package com.github.lqingchenl.coding2017.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(); +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Queue.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Queue.java new file mode 100644 index 0000000000..eb7f7e3cb0 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Queue.java @@ -0,0 +1,28 @@ +package com.github.lqingchenl.coding2017.basic; + +public class Queue { + private LinkedList queue = new LinkedList(); + private int size; + + public void enQueue(Object o) { + queue.addLast(o); + size++; + } + + public Object deQueue() { + Object o = queue.removeFirst(); + size--; + return o; + } + + public boolean isEmpty() { + if (queue.size() == 0) + return true; + return false; + } + + public int size() { + return size; + } + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/QueueTest.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/QueueTest.java new file mode 100644 index 0000000000..9b26b3cdcf --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/QueueTest.java @@ -0,0 +1,57 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; + +/** + * Queue Tester. + */ +public class QueueTest { + + private static Queue testQueue = new Queue(); + + /** + * Method: enQueue(Object o) + */ + @Test + public void testEnQueue() throws Exception { + testQueue.enQueue(1); + assertEquals(1, testQueue.deQueue()); + } + + /** + * Method: deQueue() + */ + @Test + public void testDeQueue() throws Exception { + testQueue.enQueue(1); + testQueue.enQueue(2); + assertEquals(1, testQueue.deQueue()); + assertEquals(2, testQueue.deQueue()); + } + + /** + * Method: isEmpty() + */ + @Test + public void testIsEmpty() throws Exception { + testQueue.enQueue(1); + assertEquals(1, testQueue.deQueue()); + assertEquals(true, testQueue.isEmpty()); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testQueue.enQueue(1); + testQueue.enQueue(2); + assertEquals(2, testQueue.size()); + } + + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Stack.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Stack.java new file mode 100644 index 0000000000..8b25283b40 --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/Stack.java @@ -0,0 +1,33 @@ +package com.github.lqingchenl.coding2017.basic; + +public class Stack { + private ArrayList elementData = new ArrayList(); + private int size = 0; + + public void push(Object o) { + elementData.add(o); + size++; + } + + public Object pop() { + Object o = elementData.get(size - 1); + elementData.remove(size - 1); + size--; + return o; + } + + public Object peek() { + return elementData.get(size - 1); + } + + public boolean isEmpty() { + if (elementData.size() == 0) + return true; + return false; + } + + public int size() { + return size; + } + +} diff --git a/group02/953840070/src/com/github/lqingchenl/coding2017/basic/StackTest.java b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/StackTest.java new file mode 100644 index 0000000000..b2d4935c4e --- /dev/null +++ b/group02/953840070/src/com/github/lqingchenl/coding2017/basic/StackTest.java @@ -0,0 +1,64 @@ +package com.github.lqingchenl.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.assertEquals; + +/** + * Stack Tester. + */ +public class StackTest { + + private static Stack testStack = new Stack(); + + /** + * Method: push(Object o) + */ + @Test + public void testPush() throws Exception { + testStack.push(1); + assertEquals(1, testStack.peek()); + } + + /** + * Method: pop() + */ + @Test + public void testPop() throws Exception { + testStack.push(1); + assertEquals(1, testStack.pop()); + } + + /** + * Method: peek() + */ + @Test + public void testPeek() throws Exception { + testStack.push(1); + assertEquals(1, testStack.peek()); + testStack.push(2); + assertEquals(2, testStack.peek()); + } + + /** + * Method: isEmpty() + */ + @Test + public void testIsEmpty() throws Exception { + testStack.push(1); + assertEquals(false, testStack.isEmpty()); + } + + /** + * Method: size() + */ + @Test + public void testSize() throws Exception { + testStack.push(1); + testStack.push(2); + assertEquals(2, testStack.size()); + } + +} From 6a0535de15d91aa4df859dd8a7501abe711fdb74 Mon Sep 17 00:00:00 2001 From: Harry Date: Sun, 26 Feb 2017 15:16:10 +0800 Subject: [PATCH 6/9] Submit my first code --- group02/727171008/.classpath | 7 + group02/727171008/.gitignore | 19 ++ group02/727171008/.project | 17 ++ .../coding2017/basic/ArrayListTest.java | 15 ++ .../coding2017/basic/BinaryTreeNode.java | 121 ++++++++++ .../coding2017/basic/BinaryTreeNodeTest.java | 40 ++++ .../HarryHook/coding2017/basic/Iterator.java | 7 + .../coding2017/basic/LinkedListTest.java | 93 ++++++++ .../HarryHook/coding2017/basic/List.java | 14 ++ .../HarryHook/coding2017/basic/ListTest.java | 122 ++++++++++ .../coding2017/basic/MyArrayList.java | 167 +++++++++++++ .../coding2017/basic/MyLinkedList.java | 219 ++++++++++++++++++ .../HarryHook/coding2017/basic/MyQueue.java | 54 +++++ .../HarryHook/coding2017/basic/MyStack.java | 59 +++++ .../HarryHook/coding2017/basic/QueueTest.java | 33 +++ .../HarryHook/coding2017/basic/StackTest.java | 40 ++++ 16 files changed, 1027 insertions(+) create mode 100644 group02/727171008/.classpath create mode 100644 group02/727171008/.gitignore create mode 100644 group02/727171008/.project create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java create mode 100644 group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java diff --git a/group02/727171008/.classpath b/group02/727171008/.classpath new file mode 100644 index 0000000000..3e0fb272a8 --- /dev/null +++ b/group02/727171008/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/group02/727171008/.gitignore b/group02/727171008/.gitignore new file mode 100644 index 0000000000..0cfebaa908 --- /dev/null +++ b/group02/727171008/.gitignore @@ -0,0 +1,19 @@ +/bin/ +.idea/workspace.xml +.idea/dictionaries/myj.xml +.idea/ +.DS_Store +*.classpath +*.project +.settings +.project +.target +.classpath +**/.settings +**/.classpath +**/.eclipse +**/target/ +target/ +bin/ +.svn +*.iml \ No newline at end of file diff --git a/group02/727171008/.project b/group02/727171008/.project new file mode 100644 index 0000000000..0d10c0ccb2 --- /dev/null +++ b/group02/727171008/.project @@ -0,0 +1,17 @@ + + + 727171008Learning + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java new file mode 100644 index 0000000000..0f22f6ba80 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/ArrayListTest.java @@ -0,0 +1,15 @@ +package com.github.HarryHook.coding2017.basic; + +import org.junit.Before; +import com.github.HarryHook.coding2017.basic.MyArrayList; + + +public class ArrayListTest extends ListTest { + + @Before + public void setUpArrayList() + { + aList = new MyArrayList(); + } + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java new file mode 100644 index 0000000000..b93790894f --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNode.java @@ -0,0 +1,121 @@ +/* + * Created by Harry 2017-2-23 10:50:39 + * 实现二叉树,并按二叉查找树插入节点 + * + */ +package com.github.HarryHook.coding2017.basic; + +public class BinaryTreeNode +{ + private Integer data; + private BinaryTreeNode left; + private BinaryTreeNode right; + + //中序遍历二叉树 + public void inOrder(BinaryTreeNode node) + { + if(node != null) + { + inOrder(node.left); + System.out.print(" " + node.data); + inOrder(node.right); + } + } + + //获取给节点的值 + public Integer getData() + { + return data; + } + //给一个节点赋值 + public void setData(Integer data) + { + this.data = data; + } + //获取左节点 + public BinaryTreeNode getLeft() + { + return left; + } + //指定左节点 + public void setLeft(BinaryTreeNode left) + { + this.left = left; + } + + //获取右节点 + public BinaryTreeNode getRight() + { + return right; + } + //指定右节点 + public void setRight(BinaryTreeNode right) + { + this.right = right; + } + + //在二叉树中插入一个节点,需要判断 + public BinaryTreeNode insert(Integer obj) + { + // 新增节点 + BinaryTreeNode newNode = new BinaryTreeNode(); + // 当前节点,保留根的值 + BinaryTreeNode current = this; + // 上个节点 + BinaryTreeNode parent = null; + // 如果根节点为空 + if (current.data == null) + { + newNode.setData(obj); + newNode.setLeft(null); + newNode.setRight(null); + return newNode; + }else + { + while (true) + { + parent = current; + if (obj < current.data) + { + current = current.left; + if (current == null) + { + newNode.setData(obj); + newNode.setLeft(null); + newNode.setRight(null); + parent.left = newNode; + return newNode; + } + } else + { + current = current.right; + if (current == null) + { + newNode.setData(obj); + newNode.setLeft(null); + newNode.setRight(null); + parent.right = newNode; + return newNode; + } + } + } + } + } + + public static void main(String[] args) + { + BinaryTreeNode BTN = new BinaryTreeNode(); + + BTN = BTN.insert(5); + System.out.print(BTN.getData() + " "); + System.out.print(BTN.insert(2).getData() + " "); + System.out.print(BTN.insert(1).getData() + " "); + System.out.print(BTN.insert(4).getData() + " "); + System.out.print(BTN.insert(6).getData() + " "); + System.out.print(BTN.insert(8).getData() + " "); + System.out.println(""); + System.out.println("中序遍历二叉树: "); + BTN.inOrder(BTN); + } + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java new file mode 100644 index 0000000000..60d1979713 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/BinaryTreeNodeTest.java @@ -0,0 +1,40 @@ +package com.github.HarryHook.coding2017.basic; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +import com.github.HarryHook.coding2017.basic.BinaryTreeNode; + +public class BinaryTreeNodeTest +{ + + BinaryTreeNode binaryTreeNode; + + @Before + public void setUpBinaryTreeNode() + { + binaryTreeNode = new BinaryTreeNode(); + } + + @Test + public void testBinaryTreeNodeFunctional() + { + binaryTreeNode = binaryTreeNode.insert(4); + binaryTreeNode.insert(1); + binaryTreeNode.insert(3); + binaryTreeNode.insert(5); + binaryTreeNode.insert(2); + + assertEquals(true, 4 == binaryTreeNode.getData()); + assertEquals(true, 1 == binaryTreeNode.getLeft().getData()); + assertEquals(true, 5 == binaryTreeNode.getRight().getData()); + assertEquals(true, 3 == binaryTreeNode.getLeft().getRight().getData()); + assertEquals(true, 2 == binaryTreeNode.getLeft().getRight().getLeft().getData()); + + //节点为空 说明值没有插进去 + binaryTreeNode.inOrder(binaryTreeNode); + } + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java new file mode 100644 index 0000000000..3fae84a22f --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/Iterator.java @@ -0,0 +1,7 @@ +package com.github.HarryHook.coding2017.basic; + +public interface Iterator +{ + public boolean hasNext(); + public Object next(); +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java new file mode 100644 index 0000000000..7c754e37af --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/LinkedListTest.java @@ -0,0 +1,93 @@ +package com.github.HarryHook.coding2017.basic; + +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; +import com.github.HarryHook.coding2017.basic.MyLinkedList; + +public class LinkedListTest extends ListTest{ + + private MyLinkedList aLinkedList; + + @Before + public void setUpLinkedList() { + aList = new MyLinkedList(); + aLinkedList = new MyLinkedList(); + } + + @Test + public void testAddFirst() { + aLinkedList.addFirst(5); + assertEquals(5, aLinkedList.get(0)); + + aLinkedList.addFirst(6); + assertEquals(6, aLinkedList.get(0)); + assertEquals(5, aLinkedList.get(1)); + assertEquals(2, aLinkedList.size()); + } + + @Test + public void testAddLast() { + aLinkedList.addLast("hello"); + assertEquals("hello", aLinkedList.get(0)); + + aLinkedList.addLast("world"); + assertEquals("hello", aLinkedList.get(0)); + assertEquals("world", aLinkedList.get(1)); + assertEquals(2, aLinkedList.size()); + } + + @Test + public void testRemoveFirst() { + aLinkedList.addLast("hello"); + aLinkedList.addLast("world"); + + aLinkedList.removeFirst(); + assertEquals("world", aLinkedList.get(0)); + assertEquals(1, aLinkedList.size()); + + aLinkedList.removeFirst(); + assertEquals(0, aLinkedList.size()); + } + + @Test + public void testRemoveLast() { + aLinkedList.addFirst("world"); + aLinkedList.addFirst("hello"); + + aLinkedList.removeLast(); + assertEquals("hello", aLinkedList.get(0)); + assertEquals(1, aLinkedList.size()); + + aLinkedList.removeLast(); + assertEquals(0, aLinkedList.size()); + } + + @Test + public void testLinkedListFunctional() { + for (int i=1; i<4; i++) { + aLinkedList.add(i); // [1,2,3] + } + aLinkedList.remove(1); // [1,3] + + aLinkedList.add(1, 0); // [1,0,3] + for (int i=4; i<6; i++) { + aLinkedList.addFirst(i); // [5, 4, 1, 0, 3] + } + assertEquals(5, aLinkedList.size()); + assertEquals(5, aLinkedList.get(0)); + assertEquals(1, aLinkedList.get(2)); + assertEquals(0, aLinkedList.get(3)); + + aLinkedList.remove(3); // [5, 4, 1, 3] + assertEquals(3, aLinkedList.get(aLinkedList.size()-1)); + aLinkedList.removeLast(); // [5, 4, 1] + assertEquals(1, aLinkedList.get(aLinkedList.size()-1)); + aLinkedList.removeFirst(); // [4,1] + + assertEquals(4, aLinkedList.get(0)); + assertEquals(1, aLinkedList.get(1)); + assertEquals(2, aLinkedList.size()); + } + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java new file mode 100644 index 0000000000..f2299e8e83 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/List.java @@ -0,0 +1,14 @@ +package com.github.HarryHook.coding2017.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(); + + public Iterator iterator(); +} + diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java new file mode 100644 index 0000000000..92f84b687c --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/ListTest.java @@ -0,0 +1,122 @@ +package com.github.HarryHook.coding2017.basic; + +import static org.junit.Assert.*; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import com.github.HarryHook.coding2017.basic.Iterator; +import com.github.HarryHook.coding2017.basic.List; + +public class ListTest { + + protected static List aList; + + @Test + public void testFunctional() { + aList.add(1); + aList.add(2); + assertEquals(1, aList.get(0)); + assertEquals(2, aList.get(1)); + + aList.add(3); + aList.add(0, 5); + aList.add(2, 11); + assertEquals(5, aList.get(0)); + assertEquals(11, aList.get(2)); + + aList.add("hi"); + assertEquals("hi", aList.get(5)); + assertEquals(6, aList.size()); + + aList.remove(1); + assertEquals(11, aList.get(1)); + assertEquals(2, aList.get(2)); + + assertEquals(5, aList.size()); + } + + @Test + public void testAdd() { + for (int i=0; i<100; i++) + aList.add(i); + assertEquals(0, aList.get(0)); + assertEquals(99, aList.get(99)); + assertEquals(44, aList.get(44)); + } + + @Test + public void testRemove() { + aList.add(1); + aList.add(2); + aList.add(3); + int u = (Integer)aList.remove(2); + assertEquals(3, u); + assertEquals(2, aList.size()); + + aList.add(1, 5); + u = (Integer)aList.remove(0); + assertEquals(1, u); + assertEquals(5, aList.get(0)); + assertEquals(2, aList.get(1)); + assertEquals(2, aList.size()); + + aList.remove(0); + aList.remove(0); + assertEquals(0, aList.size()); + + + } + + @Test + public void testSize() { + for (int i=0; i<10; i++) + aList.add(i*2); + assertEquals(10, aList.size()); + } + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + @Test + public void testException() { + expectedEx.expect(Exception.class); + aList.remove(1); + aList.add(3); + aList.add(2, 5); + expectedEx.expect(Exception.class); + } + + @Test + + public void testIterator() + { + Iterator it = aList.iterator(); + assertEquals(false, it.hasNext()); + + aList.add(1); + aList.add(2); + aList.add(3); + + it = aList.iterator(); + assertEquals(true, it.hasNext()); + assertEquals(1, it.next()); + assertEquals(2, it.next()); + assertEquals(3, it.next()); + assertEquals(false, it.hasNext()); + + aList.remove(1); + it = aList.iterator(); + assertEquals(true, it.hasNext()); + assertEquals(1, it.next()); + assertEquals(3, it.next()); + assertEquals(false, it.hasNext()); + + expectedEx.expect(Exception.class); + it.next(); + + } + + + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java new file mode 100644 index 0000000000..dbfd8aae19 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyArrayList.java @@ -0,0 +1,167 @@ +/* + * created by Harry 2017-2-20 18:53:38 + * 实现简单的ArrayList,具有基本的增删改查功能 + */ +package com.github.HarryHook.coding2017.basic; + +import java.util.Arrays; +import java.util.NoSuchElementException; + +public class MyArrayList implements List +{ + private int size = 0; //数组元素个数 + + private Object[] elementData = new Object[10]; //初始化数组大小为10 + + //将元素添加到数组尾部 + public void add(Object o) + { //需要判断数组空间是否够用 + ensureCapacity(size + 1); + elementData[size++] = o; + } + //在指定位置添加元素 + public void add(int index, Object o) + { + //判断下标记是否越界 + if (index > size || index < 0) + throw new IndexOutOfBoundsException( + "Index: " + index + ", Size: " + size); + ensureCapacity(size + 1); + //判断当前位置是否有元素,没有元素添加到当前位置;若有,当前元素及之后元素向右移 + if(elementData[index] == null) + { + elementData[index] = o; + } + else + { + for(int i=elementData.length-1; i>index; i--) + { + elementData[i] = elementData[i-1]; + } + elementData[index] = o; + } + size++; + + /* + //判断索引位置是否正确 + if (index > size || index < 0) + throw new IndexOutOfBoundsException( + "Index: " + index + ", Size: " + size); + //扩容检测 + ensureCapacity(size+1); + /* + * 对源数组进行复制处理(位移),从index + 1到size-index。 + * 主要目的就是空出index位置供数据插入, + * 即向右移动当前位于该位置的元素以及所有后续元素。 + + System.arraycopy(elementData, index, elementData, index + 1, + size - index); + //在指定位置赋值 + elementData[index] = 0; + size++; + + */ + } + + public Object get(int index) + { + //若index超出size应该抛出异常 + if(index >= size) + throw new IndexOutOfBoundsException( "Index: " + index + ", Size: " + size); + return elementData[index]; + + } + + public Object remove(int index) + { //涉及到元素移位 + Object oldValue = elementData[index]; + for(int i=index; i oldCapacity) + { + //Object oldData[] = elementData; //防止copyof()执行的过程中新内存或者其他进程分配内存时占用旧内存 + int newCapacity = (oldCapacity * 3)/2 + 1; //增加50%+1 + if (newCapacity < minCapacity) + newCapacity = minCapacity; + // minCapacity is usually close to size, so this is a win: + elementData = Arrays.copyOf(elementData, newCapacity); + } + } + + //返回数组的大小 + public int size() + { + return size; + } + + public Iterator iterator() + { + return new MyArrayListIterator(); + } + + private class MyArrayListIterator implements Iterator + { + private int cursor = 0; //记录索引位置 + public boolean hasNext() + { + return cursor != size; + } + public Object next() + { + try { + Object next = get(cursor); + cursor++; + return next; + + } catch (IndexOutOfBoundsException e) + { + throw new NoSuchElementException(); + } + + } + } + + public static void main(String[] args) + { + MyArrayList myArrays = new MyArrayList(); + myArrays.add(3); + myArrays.add(0, 11); + myArrays.add(1, 2); + myArrays.add(3, 5); + myArrays.add(2, 1); + myArrays.add(7); + Print(myArrays); + + for(int i = 0; i < 19; i++) + myArrays.add(i, 55); + + System.out.println("获取指定位置元素: " + myArrays.get(2)); + System.out.println("删除指定位置元素: " + myArrays.remove(1)); + System.out.println("当前元素个数:" + myArrays.size()); + + Print(myArrays); + + } + public static void Print(MyArrayList myArrays) + { + Iterator it = myArrays.iterator(); + System.out.println("对链表中的元素进行打印:"); + while(it.hasNext()) + System.out.print(it.next() + " "); + System.out.println(""); + System.out.println("当前元素个数: " + myArrays.size()); + + } + +} + diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java new file mode 100644 index 0000000000..5aeab57496 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyLinkedList.java @@ -0,0 +1,219 @@ +/* + * created by Harry 2017-2-21 14:43:41 + * 实现简单的LinkedList + */ + +package com.github.HarryHook.coding2017.basic; + +public class MyLinkedList implements List +{ + private Node head = null; //头指针 + private int size = 0; + private static class Node + { + Object data; + Node next; + } + public void add(Object o) + { + addLast(o); + } + //在指定位置添加元素 + public void add(int index , Object o) + { + + if (index > size || index < 0) + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); + //存在插入头结点的情况 + if(index == 0) + addFirst(o); + else + { //即 index != 0 的情况 + // p保存待插入节点的前一节点,x指向要插入的节点 + Node x = head; + Node p = null; + int i = 0; + while(i < index) + { + p = x; + x = x.next; + i++; + } + Node n = new Node(); + p.next = n; + n.next = x; + n.data = o; + size++; + } + + } + //返回指定位置元素 + public Object get(int index) + { + Node x = head; + int i = 0; + while(i < index && x != null) + { + x = x.next; + i++; + } + return x.data; + } + + //移除指定位置节点 + public Object remove(int index) + { + if (index > size || index < 0) + throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); + //先判断是否是头节点 + if( index == 0) + { + return removeFirst(); + } + else + { + Node x = head; + Node pre = null; + int i = 0; + while(i < index) + { + pre = x; + x = x.next; + i++; + } + Object Data = pre.next.data; + pre.next = x.next; + x = null; + size--; + return Data; + } + + } + //头部添加节点 + public void addFirst(Object o) + { + Node n = new Node(); + n.next = head; + head = n; + n.data = o; + size++; + } + //尾部添加节点 + public void addLast(Object o) + { + if (head == null) + { + head = new Node(); + head.data = o; + } + else + { + Node x = head; + while(x.next != null) + { + x = x.next; + } + Node n = new Node(); + x.next = n; + n.next = null; + n.data = o; + } + size++; + } + //移除第一个节点 + public Object removeFirst() + { + Node n = head; + Object Data = n.data; + head = head.next; + n = null; + size--; + return Data; + } + + //移除最后一个节点 + //removeLast()方法存在bug + public Object removeLast() + { + Node x = head; + Node p = null; + if(x.next == null) + { + return removeFirst(); + } + else + { + while(x.next != null) + { + p = x; + x = x.next; + } + Object Data = x.data; + p.next = null; + x = null; //删除最后一个节点 + size--; + return Data; + } + } + public int size(){ + return size; + } + public Iterator iterator() + { + return new MyLinkedListIterator(); + } + private class MyLinkedListIterator implements Iterator + { + private int cursor = 0; //记录索引位置 + public boolean hasNext() + { + return cursor != size; + } + public Object next() + { + Object next = get(cursor); + cursor ++; + return next; + } + } + public static void main(String[] args) + { + MyLinkedList myList = new MyLinkedList(); + myList.add(3); + myList.add(5); + myList.add(0, 4); + myList.add(2, 7); + myList.addFirst(1); + myList.addLast(6); + + Print(myList); + + System.out.println("当前指定位置元素: " + myList.get(1)); + System.out.println("移除指定位置元素: " + myList.remove(4)); + Print(myList); + + System.out.println("移除第一个节点元素: " + myList.removeLast()); + Print(myList); + System.out.println("移除最后一个节点元素: " + myList.removeLast()); + Print(myList); + System.out.println("移除最后一个节点元素: " + myList.removeLast()); + Print(myList); + System.out.println("移除最后一个节点元素: " + myList.removeLast()); + Print(myList); + System.out.println("移除最后一个节点元素: " + myList.removeLast()); + Print(myList); + + } + public static void Print(MyLinkedList myList) + { + Iterator it = myList.iterator(); + System.out.println("对链表中的元素进行打印:"); + while(it.hasNext()) + System.out.print(it.next() + " "); + System.out.println(""); + System.out.println("当前元素个数: " + myList.size()); + System.out.println(""); + } + + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java new file mode 100644 index 0000000000..9b713eaea9 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyQueue.java @@ -0,0 +1,54 @@ +/* + * created by Harry 2017-2-22 13:06:43 + * 实现简单的队列 + */ +package com.github.HarryHook.coding2017.basic; +import java.util.*; +public class MyQueue +{ + private MyArrayList elementData = new MyArrayList(); + private int size = 0; + //入队 + public void enQueue(Object o) + { + elementData.add(o); + size++; + } + //出队 + public Object deQueue() + { + if(isEmpty()) + throw new NoSuchElementException(); + Object Data = elementData.remove(0); + size--; + return Data; + } + //判断队列是否为空 + public boolean isEmpty() + { + return size() == 0; + } + //队列中元素个数 + public int size() + { + return size; + } + public static void main(String[] args) + { + MyQueue mq = new MyQueue(); + mq.enQueue(1); + mq.enQueue(2); + mq.enQueue(3); + mq.enQueue(4); + System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); + System.out.println("队列中元素个数: " + mq.size()); + System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); + System.out.println("队列中元素个数: " + mq.size()); + System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); + System.out.println("队列中元素个数: " + mq.size()); + System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); + System.out.println("队列中元素个数: " + mq.size()); + //System.out.println("队列出栈,出栈元素为: " + mq.deQueue()); + //System.out.println("队列中元素个数: " + mq.size()); + } +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java new file mode 100644 index 0000000000..c7f87c04e6 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/MyStack.java @@ -0,0 +1,59 @@ +/* + * created by Harry 2017-2-22 10:48:34 + * 实现简单的Stack + */ +package com.github.HarryHook.coding2017.basic; + +import java.util.*; + +public class MyStack +{ + private MyArrayList elementData = new MyArrayList(); + private int size = 0; + + //入栈操作 + public void push(Object o) + { + elementData.add(o); + size++; + } + //出栈操作 + public Object pop() + { + Object obj = peek(); + elementData.remove(size() - 1); + size--; + return obj; + } + //获取当前栈顶元素,不用出栈 + public Object peek() + { + if(isEmpty()) + throw new EmptyStackException(); + return elementData.get(size() - 1); + } + //判断栈是否为空 + public boolean isEmpty() + { + return size() == 0; + } + //返回栈内元素个数 + public int size(){ + return size; + } + + public static void main(String[] args) + { + MyStack ms = new MyStack(); + + ms.push(1); + ms.push(2); + ms.push(13); + System.out.println("当前栈顶元素是: " + ms.peek()); + System.out.println("出栈元素是: " + ms.pop()); + System.out.println("出栈元素是: " + ms.pop()); + ms.push(12); + System.out.println("出栈元素是: " + ms.pop()); + System.out.println("当前栈顶元素是: " + ms.peek()); + } +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java new file mode 100644 index 0000000000..340f79d240 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/QueueTest.java @@ -0,0 +1,33 @@ +package com.github.HarryHook.coding2017.basic; + +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; +import com.github.HarryHook.coding2017.basic.MyQueue; + +public class QueueTest { + private MyQueue queue; + + @Before + public void setUpQueue() { + queue = new MyQueue(); + } + + @Test + public void testQueueFunctional() { + assertEquals(true, queue.isEmpty()); + queue.enQueue(4); + queue.enQueue(2); + assertEquals(2, queue.size()); + assertEquals(false, queue.isEmpty()); + + int i = (Integer)queue.deQueue(); + assertEquals(4, i); + i = (Integer)queue.deQueue(); + assertEquals(2, i); + + assertEquals(0, queue.size()); + assertEquals(true, queue.isEmpty()); + } + +} diff --git a/group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java b/group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java new file mode 100644 index 0000000000..26160faef6 --- /dev/null +++ b/group02/727171008/src/com/github/HarryHook/coding2017/basic/StackTest.java @@ -0,0 +1,40 @@ +package com.github.HarryHook.coding2017.basic; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +import com.github.HarryHook.coding2017.basic.MyStack; + +public class StackTest { + + private MyStack stack; + + @Before + public void setUpStack() { + stack = new MyStack(); + } + + @Test + public void testStackFunctional() { + assertEquals(true, stack.isEmpty()); + stack.push(4); + stack.push(2); + assertEquals(2, stack.size()); + assertEquals(false, stack.isEmpty()); + + int i = (Integer)stack.pop(); + assertEquals(2, i); + + i = (Integer)stack.peek(); + assertEquals(4, i); + + i = (Integer)stack.pop(); + assertEquals(4, i); + + assertEquals(0, stack.size()); + assertEquals(true, stack.isEmpty()); + } + +} From 53bf53d3a6ff6cfa8cd32e37a23295797746caed Mon Sep 17 00:00:00 2001 From: 435994736 <435994736@qq.com> Date: Sun, 26 Feb 2017 18:34:09 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/MyArrayList.java | 83 ++++++++++++ .../coding2017/basic/MyLinkedList.java | 119 +++++++++++++++++ .../lhpmatlab/coding2017/basic/MyQueue.java | 29 +++++ .../lhpmatlab/coding2017/basic/MyStack.java | 30 +++++ .../coding2017/basic/MyArrayListTest.java | 113 ++++++++++++++++ .../coding2017/basic/MyLinkedListTest.java | 121 ++++++++++++++++++ .../coding2017/basic/MyQueueTest.java | 71 ++++++++++ .../coding2017/basic/MyStackTest.java | 104 +++++++++++++++ 8 files changed, 670 insertions(+) create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyLinkedListTest.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyQueueTest.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java new file mode 100644 index 0000000000..03f6710788 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java @@ -0,0 +1,83 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/18. + */ +public class MyArrayList { + + private Object[] initialArray = {}; + private Object[] dataArray; + private int initSize = 10; + private int arraySize; + public MyArrayList() { + dataArray = initialArray; + } + + public MyArrayList(int init) { + dataArray = new Object[init]; + } + + public void ensureCapacity(int newCapacity) { + if (newCapacity < arraySize) + return; + + Object[] old = dataArray; + dataArray = new Object[newCapacity]; + for (int i = 0; i < size(); i++) { + dataArray[i] = old[i]; + } + } + + public void add(T element) { + add(size(), element); + } + + public void add(int index, T element) { + if (size() == dataArray.length) { + ensureCapacity(size()*2 + 1); + } + for(int i=arraySize;i>index;i--) { + dataArray[i] = dataArray[i - 1]; + } + dataArray[index] = element; + arraySize++; + } + + public T delete(int index) { + if (index < 0 || index > arraySize) { + throw new ArrayIndexOutOfBoundsException(); + } + T removeElement = (T)dataArray[index]; + for (int i = index; i < size() -1; i++) { + dataArray[i] = dataArray[i + 1]; + } + arraySize--; + return removeElement; + } + + public T get(int index) { + if (index < 0 || index > arraySize) { + throw new ArrayIndexOutOfBoundsException(); + } + return (T)dataArray[index]; + } + + public T set(int index, T newElement) { + if (index < 0 || index > arraySize) { + throw new ArrayIndexOutOfBoundsException(); + } + T oldElement = (T) dataArray[index]; + dataArray[index] = newElement; + + return oldElement; + } + + public int size() { + return arraySize; + } + + public boolean isEmpty() { + return size() == 0; + } + +} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java new file mode 100644 index 0000000000..9e7eab3401 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java @@ -0,0 +1,119 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/18. + */ +public class MyLinkedList { + private class Node { + public Node pre; + public Node next; + public T data; + + public Node(Node pre,Node next,T data) { + this.pre = pre; + this.next = next; + this.data = data; + } + } + + private int dataSize; + + private Node head; + private Node tail; + + public MyLinkedList() { + head = new Node(null,null,null); + tail = new Node(head, null, null); + head.next = tail; + dataSize = 0; + } + + public void add(T t) { +// add(size(), t); + Node newNode = new Node<>(null, tail, t); + newNode.pre = tail.pre; + tail.pre.next = newNode; + tail.pre = newNode; + dataSize++; + + } + + /** + * 根据索引添加没有实现 + * @param index + * @param element + */ + public void add(int index,T element) { + //TODO 根据索引添加元素 +// addBefore(getNode(index,0,size()-1),element); +// if (index == dataSize) { +// add(element); +// } else { + // +// } + } + + public T get(int index) { + return getNode(index).data; + } + + public T set(int index, T newValue) { + Node node = getNode(index); + T oldData = node.data; + node.data = newValue; + return oldData; + } + + public T remove(int index) { + Node node = getNode(index); + node.next.pre = node.pre; + node.pre.next = node.next; + dataSize--; + + return node.data; + + } + + private void addBefore(Node node, T element) { +// newNode.pre.next = newNode; +// node.pre = newNode; + Node pre = node.pre; + Node newNode = new Node<>(node.pre, node, element); + node.pre = newNode; + pre.next = newNode; + + dataSize++; + } + + private Node getNode(int index) { + return getNode(index, 0, size()); + } + + private Node getNode(int index, int lower, int upper) { + Node p; + if (index < lower || index > upper) { + throw new IndexOutOfBoundsException(); + } + + if (index < size() / 2) { + p = head.next; + for (int i = 0; i < index; i++) { + p = p.next; + } + } else { + p = tail.pre; + for (int i = size()-1; i > index; i--) { + p = p.pre; + } + } + return p; + } + + public int size() { + return dataSize; + } + + public boolean isEmpty() { + return size() == 0; + } +} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java new file mode 100644 index 0000000000..6d0c970b65 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java @@ -0,0 +1,29 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/22. + */ +public class MyQueue { + private MyLinkedList link = new MyLinkedList<>(); + + public void enQueue(T t) { + link.add(t); + } + + public T deQueue() { + if (size() <= 0) { + return null; + } + T t = link.get(0); + link.remove(0); + return t; + } + + public boolean isEmpty() { + return size() == 0; + } + + public int size() { + return link.size(); + } +} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java new file mode 100644 index 0000000000..3fd9d2f5c2 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java @@ -0,0 +1,30 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/22. + */ +public class MyStack { + private MyArrayList list = new MyArrayList<>(); + + public void push(T t) { + list.add(t); + } + + public T pop() { + if (size() <= 0) { + throw new IndexOutOfBoundsException(); + } + return list.delete(size() - 1); + } + + public T peek() { + return list.get(size() - 1); + } + + public boolean isEmpty() { + return list.size() == 0; + } + public int size() { + return list.size(); + } +} diff --git a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java new file mode 100644 index 0000000000..e29d41feac --- /dev/null +++ b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java @@ -0,0 +1,113 @@ +package com.github.lhpmatlab.coding2017.basic; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +public class MyArrayListTest { + private MyArrayList list; + + @Before + public void init(){ + list = new MyArrayList<>(); + } + + @Test + public void testEnsureCapacity() { + assertEquals("init list size is 0 ", list.size(), 0); + list.add("1"); + list.ensureCapacity(10); + assertEquals("ensureCapacity size is 10 ", list.size(),1); + } + + /** + * 在列表的末尾添加元素 + */ + @Test + public void testAddT() { + assertEquals("init list size is 0 ", list.size(), 0); + list.add("1"); + list.add("2"); + assertEquals("add list size ", list.size(), 2); + for (int i=0; i +* @since
���� 26, 2017
+* @version 1.0 +*/ +public class MyLinkedListTest { + private MyLinkedList linkedList; + + @Before + public void before() throws Exception { + linkedList = new MyLinkedList<>(); + } + + @After + public void after() throws Exception { + } + + /** + * + * Method: add(T t) + * + */ + @Test + public void testAddT() throws Exception { + assertEquals("init list size is 0 ", linkedList.size(), 0); + linkedList.add("1"); + linkedList.add("2"); + assertEquals("add list size ", linkedList.size(), 2); + for (int i=0; i +* @since
���� 26, 2017
+* @version 1.0 +*/ +public class MyQueueTest { + private MyQueue queue; + + @Before + public void init() throws Exception { + queue = new MyQueue<>(); + } + + /** + * + * Method: enQueue(T t) + * + */ + @Test + public void testEnQueue() throws Exception { + queue.enQueue("1"); + assertEquals("size ", queue.size(), 1); + } + + /** + * + * Method: deQueue() + * + */ + @Test + public void testDeQueue() throws Exception { + queue.enQueue("1"); + queue.enQueue("2"); +// queue.deQueue(); + assertEquals("dequeue element ",queue.deQueue(),"1"); + assertEquals("size ", queue.size(), 1); + + } + + /** + * + * Method: isEmpty() + * + */ + @Test + public void testIsEmpty() throws Exception { + assertEquals("isEmpty method",queue.isEmpty(),true); + } + + /** + * + * Method: size() + * + */ + @Test + public void testSize() throws Exception { + queue.enQueue("1"); + queue.enQueue("2"); + assertEquals("size method", queue.size(),2); + } + + +} diff --git a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java new file mode 100644 index 0000000000..a90af5d720 --- /dev/null +++ b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java @@ -0,0 +1,104 @@ +package com.github.lhpmatlab.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.*; + +/** +* MyStack Tester. +* +* @author +* @since
���� 26, 2017
+* @version 1.0 +*/ +public class MyStackTest { + + MyStack stack; + + + @Before + public void init() throws Exception { + stack = new MyStack<>(); + } + + @After + public void after() throws Exception { + } + + /** + * + * Method: push(T t) + * + */ + @Test + public void testPush() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + assertEquals("pust stack ", stack.size(),1); + } + + /** + * + * Method: pop() + * + */ + @Test + public void testPop() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + stack.push("2"); + stack.pop(); + assertEquals("after pop ",stack.size(),1); + } + + /** + * + * Method: peek() + * + */ + @Test + public void testPeek() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + stack.push("2"); + assertEquals("peek ", stack.peek(),"2"); + } + + /** + *测试判空方法 + * Method: isEmpty() + * + */ + @Test + public void testIsEmpty() throws Exception { + assertEquals("stack is empty ", stack.isEmpty(), true); + } + + /** + *测试判空方法,不为空的情况 + * Method: isEmpty() + * + */ + @Test + public void testIsNotEmpty() throws Exception { + stack.push("1"); + assertEquals("stack is empty ", stack.isEmpty(), false); + } + + /** + * + * Method: size() + * + */ + @Test + public void testSize() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + stack.push("2"); + assertEquals("size is 2", stack.size(), 2); + } + + +} From f9fe90226f941d00ade3d4278d1bbcdf54f1d993 Mon Sep 17 00:00:00 2001 From: Rong Huang <851113375@qq.com> Date: Sun, 26 Feb 2017 18:45:56 +0800 Subject: [PATCH 8/9] =?UTF-8?q?Revert=20"=E7=AC=AC=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BD=9C=E4=B8=9A"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/MyArrayList.java | 83 ------------ .../coding2017/basic/MyLinkedList.java | 119 ----------------- .../lhpmatlab/coding2017/basic/MyQueue.java | 29 ----- .../lhpmatlab/coding2017/basic/MyStack.java | 30 ----- .../coding2017/basic/MyArrayListTest.java | 113 ---------------- .../coding2017/basic/MyLinkedListTest.java | 121 ------------------ .../coding2017/basic/MyQueueTest.java | 71 ---------- .../coding2017/basic/MyStackTest.java | 104 --------------- 8 files changed, 670 deletions(-) delete mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java delete mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java delete mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java delete mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java delete mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java delete mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyLinkedListTest.java delete mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyQueueTest.java delete mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java deleted file mode 100644 index 03f6710788..0000000000 --- a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.github.lhpmatlab.coding2017.basic; - -/** - * Created by andy on 2017/2/18. - */ -public class MyArrayList { - - private Object[] initialArray = {}; - private Object[] dataArray; - private int initSize = 10; - private int arraySize; - public MyArrayList() { - dataArray = initialArray; - } - - public MyArrayList(int init) { - dataArray = new Object[init]; - } - - public void ensureCapacity(int newCapacity) { - if (newCapacity < arraySize) - return; - - Object[] old = dataArray; - dataArray = new Object[newCapacity]; - for (int i = 0; i < size(); i++) { - dataArray[i] = old[i]; - } - } - - public void add(T element) { - add(size(), element); - } - - public void add(int index, T element) { - if (size() == dataArray.length) { - ensureCapacity(size()*2 + 1); - } - for(int i=arraySize;i>index;i--) { - dataArray[i] = dataArray[i - 1]; - } - dataArray[index] = element; - arraySize++; - } - - public T delete(int index) { - if (index < 0 || index > arraySize) { - throw new ArrayIndexOutOfBoundsException(); - } - T removeElement = (T)dataArray[index]; - for (int i = index; i < size() -1; i++) { - dataArray[i] = dataArray[i + 1]; - } - arraySize--; - return removeElement; - } - - public T get(int index) { - if (index < 0 || index > arraySize) { - throw new ArrayIndexOutOfBoundsException(); - } - return (T)dataArray[index]; - } - - public T set(int index, T newElement) { - if (index < 0 || index > arraySize) { - throw new ArrayIndexOutOfBoundsException(); - } - T oldElement = (T) dataArray[index]; - dataArray[index] = newElement; - - return oldElement; - } - - public int size() { - return arraySize; - } - - public boolean isEmpty() { - return size() == 0; - } - -} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java deleted file mode 100644 index 9e7eab3401..0000000000 --- a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.github.lhpmatlab.coding2017.basic; - -/** - * Created by andy on 2017/2/18. - */ -public class MyLinkedList { - private class Node { - public Node pre; - public Node next; - public T data; - - public Node(Node pre,Node next,T data) { - this.pre = pre; - this.next = next; - this.data = data; - } - } - - private int dataSize; - - private Node head; - private Node tail; - - public MyLinkedList() { - head = new Node(null,null,null); - tail = new Node(head, null, null); - head.next = tail; - dataSize = 0; - } - - public void add(T t) { -// add(size(), t); - Node newNode = new Node<>(null, tail, t); - newNode.pre = tail.pre; - tail.pre.next = newNode; - tail.pre = newNode; - dataSize++; - - } - - /** - * 根据索引添加没有实现 - * @param index - * @param element - */ - public void add(int index,T element) { - //TODO 根据索引添加元素 -// addBefore(getNode(index,0,size()-1),element); -// if (index == dataSize) { -// add(element); -// } else { - // -// } - } - - public T get(int index) { - return getNode(index).data; - } - - public T set(int index, T newValue) { - Node node = getNode(index); - T oldData = node.data; - node.data = newValue; - return oldData; - } - - public T remove(int index) { - Node node = getNode(index); - node.next.pre = node.pre; - node.pre.next = node.next; - dataSize--; - - return node.data; - - } - - private void addBefore(Node node, T element) { -// newNode.pre.next = newNode; -// node.pre = newNode; - Node pre = node.pre; - Node newNode = new Node<>(node.pre, node, element); - node.pre = newNode; - pre.next = newNode; - - dataSize++; - } - - private Node getNode(int index) { - return getNode(index, 0, size()); - } - - private Node getNode(int index, int lower, int upper) { - Node p; - if (index < lower || index > upper) { - throw new IndexOutOfBoundsException(); - } - - if (index < size() / 2) { - p = head.next; - for (int i = 0; i < index; i++) { - p = p.next; - } - } else { - p = tail.pre; - for (int i = size()-1; i > index; i--) { - p = p.pre; - } - } - return p; - } - - public int size() { - return dataSize; - } - - public boolean isEmpty() { - return size() == 0; - } -} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java deleted file mode 100644 index 6d0c970b65..0000000000 --- a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.lhpmatlab.coding2017.basic; - -/** - * Created by andy on 2017/2/22. - */ -public class MyQueue { - private MyLinkedList link = new MyLinkedList<>(); - - public void enQueue(T t) { - link.add(t); - } - - public T deQueue() { - if (size() <= 0) { - return null; - } - T t = link.get(0); - link.remove(0); - return t; - } - - public boolean isEmpty() { - return size() == 0; - } - - public int size() { - return link.size(); - } -} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java deleted file mode 100644 index 3fd9d2f5c2..0000000000 --- a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.lhpmatlab.coding2017.basic; - -/** - * Created by andy on 2017/2/22. - */ -public class MyStack { - private MyArrayList list = new MyArrayList<>(); - - public void push(T t) { - list.add(t); - } - - public T pop() { - if (size() <= 0) { - throw new IndexOutOfBoundsException(); - } - return list.delete(size() - 1); - } - - public T peek() { - return list.get(size() - 1); - } - - public boolean isEmpty() { - return list.size() == 0; - } - public int size() { - return list.size(); - } -} diff --git a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java deleted file mode 100644 index e29d41feac..0000000000 --- a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.github.lhpmatlab.coding2017.basic; - -import static org.junit.Assert.assertEquals; - -import org.junit.Before; -import org.junit.Test; - -public class MyArrayListTest { - private MyArrayList list; - - @Before - public void init(){ - list = new MyArrayList<>(); - } - - @Test - public void testEnsureCapacity() { - assertEquals("init list size is 0 ", list.size(), 0); - list.add("1"); - list.ensureCapacity(10); - assertEquals("ensureCapacity size is 10 ", list.size(),1); - } - - /** - * 在列表的末尾添加元素 - */ - @Test - public void testAddT() { - assertEquals("init list size is 0 ", list.size(), 0); - list.add("1"); - list.add("2"); - assertEquals("add list size ", list.size(), 2); - for (int i=0; i -* @since
���� 26, 2017
-* @version 1.0 -*/ -public class MyLinkedListTest { - private MyLinkedList linkedList; - - @Before - public void before() throws Exception { - linkedList = new MyLinkedList<>(); - } - - @After - public void after() throws Exception { - } - - /** - * - * Method: add(T t) - * - */ - @Test - public void testAddT() throws Exception { - assertEquals("init list size is 0 ", linkedList.size(), 0); - linkedList.add("1"); - linkedList.add("2"); - assertEquals("add list size ", linkedList.size(), 2); - for (int i=0; i -* @since
���� 26, 2017
-* @version 1.0 -*/ -public class MyQueueTest { - private MyQueue queue; - - @Before - public void init() throws Exception { - queue = new MyQueue<>(); - } - - /** - * - * Method: enQueue(T t) - * - */ - @Test - public void testEnQueue() throws Exception { - queue.enQueue("1"); - assertEquals("size ", queue.size(), 1); - } - - /** - * - * Method: deQueue() - * - */ - @Test - public void testDeQueue() throws Exception { - queue.enQueue("1"); - queue.enQueue("2"); -// queue.deQueue(); - assertEquals("dequeue element ",queue.deQueue(),"1"); - assertEquals("size ", queue.size(), 1); - - } - - /** - * - * Method: isEmpty() - * - */ - @Test - public void testIsEmpty() throws Exception { - assertEquals("isEmpty method",queue.isEmpty(),true); - } - - /** - * - * Method: size() - * - */ - @Test - public void testSize() throws Exception { - queue.enQueue("1"); - queue.enQueue("2"); - assertEquals("size method", queue.size(),2); - } - - -} diff --git a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java deleted file mode 100644 index a90af5d720..0000000000 --- a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.github.lhpmatlab.coding2017.basic; - -import org.junit.Test; -import org.junit.Before; -import org.junit.After; - -import static org.junit.Assert.*; - -/** -* MyStack Tester. -* -* @author -* @since
���� 26, 2017
-* @version 1.0 -*/ -public class MyStackTest { - - MyStack stack; - - - @Before - public void init() throws Exception { - stack = new MyStack<>(); - } - - @After - public void after() throws Exception { - } - - /** - * - * Method: push(T t) - * - */ - @Test - public void testPush() throws Exception { - assertEquals("init stack ", stack.size(), 0); - stack.push("1"); - assertEquals("pust stack ", stack.size(),1); - } - - /** - * - * Method: pop() - * - */ - @Test - public void testPop() throws Exception { - assertEquals("init stack ", stack.size(), 0); - stack.push("1"); - stack.push("2"); - stack.pop(); - assertEquals("after pop ",stack.size(),1); - } - - /** - * - * Method: peek() - * - */ - @Test - public void testPeek() throws Exception { - assertEquals("init stack ", stack.size(), 0); - stack.push("1"); - stack.push("2"); - assertEquals("peek ", stack.peek(),"2"); - } - - /** - *测试判空方法 - * Method: isEmpty() - * - */ - @Test - public void testIsEmpty() throws Exception { - assertEquals("stack is empty ", stack.isEmpty(), true); - } - - /** - *测试判空方法,不为空的情况 - * Method: isEmpty() - * - */ - @Test - public void testIsNotEmpty() throws Exception { - stack.push("1"); - assertEquals("stack is empty ", stack.isEmpty(), false); - } - - /** - * - * Method: size() - * - */ - @Test - public void testSize() throws Exception { - assertEquals("init stack ", stack.size(), 0); - stack.push("1"); - stack.push("2"); - assertEquals("size is 2", stack.size(), 2); - } - - -} From 5cfb6d580c5c88a37a6ec91a690d2d6da8f554c8 Mon Sep 17 00:00:00 2001 From: Rong Huang <851113375@qq.com> Date: Sun, 26 Feb 2017 18:59:15 +0800 Subject: [PATCH 9/9] =?UTF-8?q?Revert=20"Revert=20"=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/MyArrayList.java | 83 ++++++++++++ .../coding2017/basic/MyLinkedList.java | 119 +++++++++++++++++ .../lhpmatlab/coding2017/basic/MyQueue.java | 29 +++++ .../lhpmatlab/coding2017/basic/MyStack.java | 30 +++++ .../coding2017/basic/MyArrayListTest.java | 113 ++++++++++++++++ .../coding2017/basic/MyLinkedListTest.java | 121 ++++++++++++++++++ .../coding2017/basic/MyQueueTest.java | 71 ++++++++++ .../coding2017/basic/MyStackTest.java | 104 +++++++++++++++ 8 files changed, 670 insertions(+) create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java create mode 100644 group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyLinkedListTest.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyQueueTest.java create mode 100644 group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java new file mode 100644 index 0000000000..03f6710788 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyArrayList.java @@ -0,0 +1,83 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/18. + */ +public class MyArrayList { + + private Object[] initialArray = {}; + private Object[] dataArray; + private int initSize = 10; + private int arraySize; + public MyArrayList() { + dataArray = initialArray; + } + + public MyArrayList(int init) { + dataArray = new Object[init]; + } + + public void ensureCapacity(int newCapacity) { + if (newCapacity < arraySize) + return; + + Object[] old = dataArray; + dataArray = new Object[newCapacity]; + for (int i = 0; i < size(); i++) { + dataArray[i] = old[i]; + } + } + + public void add(T element) { + add(size(), element); + } + + public void add(int index, T element) { + if (size() == dataArray.length) { + ensureCapacity(size()*2 + 1); + } + for(int i=arraySize;i>index;i--) { + dataArray[i] = dataArray[i - 1]; + } + dataArray[index] = element; + arraySize++; + } + + public T delete(int index) { + if (index < 0 || index > arraySize) { + throw new ArrayIndexOutOfBoundsException(); + } + T removeElement = (T)dataArray[index]; + for (int i = index; i < size() -1; i++) { + dataArray[i] = dataArray[i + 1]; + } + arraySize--; + return removeElement; + } + + public T get(int index) { + if (index < 0 || index > arraySize) { + throw new ArrayIndexOutOfBoundsException(); + } + return (T)dataArray[index]; + } + + public T set(int index, T newElement) { + if (index < 0 || index > arraySize) { + throw new ArrayIndexOutOfBoundsException(); + } + T oldElement = (T) dataArray[index]; + dataArray[index] = newElement; + + return oldElement; + } + + public int size() { + return arraySize; + } + + public boolean isEmpty() { + return size() == 0; + } + +} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java new file mode 100644 index 0000000000..9e7eab3401 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyLinkedList.java @@ -0,0 +1,119 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/18. + */ +public class MyLinkedList { + private class Node { + public Node pre; + public Node next; + public T data; + + public Node(Node pre,Node next,T data) { + this.pre = pre; + this.next = next; + this.data = data; + } + } + + private int dataSize; + + private Node head; + private Node tail; + + public MyLinkedList() { + head = new Node(null,null,null); + tail = new Node(head, null, null); + head.next = tail; + dataSize = 0; + } + + public void add(T t) { +// add(size(), t); + Node newNode = new Node<>(null, tail, t); + newNode.pre = tail.pre; + tail.pre.next = newNode; + tail.pre = newNode; + dataSize++; + + } + + /** + * 根据索引添加没有实现 + * @param index + * @param element + */ + public void add(int index,T element) { + //TODO 根据索引添加元素 +// addBefore(getNode(index,0,size()-1),element); +// if (index == dataSize) { +// add(element); +// } else { + // +// } + } + + public T get(int index) { + return getNode(index).data; + } + + public T set(int index, T newValue) { + Node node = getNode(index); + T oldData = node.data; + node.data = newValue; + return oldData; + } + + public T remove(int index) { + Node node = getNode(index); + node.next.pre = node.pre; + node.pre.next = node.next; + dataSize--; + + return node.data; + + } + + private void addBefore(Node node, T element) { +// newNode.pre.next = newNode; +// node.pre = newNode; + Node pre = node.pre; + Node newNode = new Node<>(node.pre, node, element); + node.pre = newNode; + pre.next = newNode; + + dataSize++; + } + + private Node getNode(int index) { + return getNode(index, 0, size()); + } + + private Node getNode(int index, int lower, int upper) { + Node p; + if (index < lower || index > upper) { + throw new IndexOutOfBoundsException(); + } + + if (index < size() / 2) { + p = head.next; + for (int i = 0; i < index; i++) { + p = p.next; + } + } else { + p = tail.pre; + for (int i = size()-1; i > index; i--) { + p = p.pre; + } + } + return p; + } + + public int size() { + return dataSize; + } + + public boolean isEmpty() { + return size() == 0; + } +} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java new file mode 100644 index 0000000000..6d0c970b65 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyQueue.java @@ -0,0 +1,29 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/22. + */ +public class MyQueue { + private MyLinkedList link = new MyLinkedList<>(); + + public void enQueue(T t) { + link.add(t); + } + + public T deQueue() { + if (size() <= 0) { + return null; + } + T t = link.get(0); + link.remove(0); + return t; + } + + public boolean isEmpty() { + return size() == 0; + } + + public int size() { + return link.size(); + } +} diff --git a/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java new file mode 100644 index 0000000000..3fd9d2f5c2 --- /dev/null +++ b/group02/435994736Learning/src/main/java/com/github/lhpmatlab/coding2017/basic/MyStack.java @@ -0,0 +1,30 @@ +package com.github.lhpmatlab.coding2017.basic; + +/** + * Created by andy on 2017/2/22. + */ +public class MyStack { + private MyArrayList list = new MyArrayList<>(); + + public void push(T t) { + list.add(t); + } + + public T pop() { + if (size() <= 0) { + throw new IndexOutOfBoundsException(); + } + return list.delete(size() - 1); + } + + public T peek() { + return list.get(size() - 1); + } + + public boolean isEmpty() { + return list.size() == 0; + } + public int size() { + return list.size(); + } +} diff --git a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java new file mode 100644 index 0000000000..e29d41feac --- /dev/null +++ b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyArrayListTest.java @@ -0,0 +1,113 @@ +package com.github.lhpmatlab.coding2017.basic; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +public class MyArrayListTest { + private MyArrayList list; + + @Before + public void init(){ + list = new MyArrayList<>(); + } + + @Test + public void testEnsureCapacity() { + assertEquals("init list size is 0 ", list.size(), 0); + list.add("1"); + list.ensureCapacity(10); + assertEquals("ensureCapacity size is 10 ", list.size(),1); + } + + /** + * 在列表的末尾添加元素 + */ + @Test + public void testAddT() { + assertEquals("init list size is 0 ", list.size(), 0); + list.add("1"); + list.add("2"); + assertEquals("add list size ", list.size(), 2); + for (int i=0; i +* @since
���� 26, 2017
+* @version 1.0 +*/ +public class MyLinkedListTest { + private MyLinkedList linkedList; + + @Before + public void before() throws Exception { + linkedList = new MyLinkedList<>(); + } + + @After + public void after() throws Exception { + } + + /** + * + * Method: add(T t) + * + */ + @Test + public void testAddT() throws Exception { + assertEquals("init list size is 0 ", linkedList.size(), 0); + linkedList.add("1"); + linkedList.add("2"); + assertEquals("add list size ", linkedList.size(), 2); + for (int i=0; i +* @since
���� 26, 2017
+* @version 1.0 +*/ +public class MyQueueTest { + private MyQueue queue; + + @Before + public void init() throws Exception { + queue = new MyQueue<>(); + } + + /** + * + * Method: enQueue(T t) + * + */ + @Test + public void testEnQueue() throws Exception { + queue.enQueue("1"); + assertEquals("size ", queue.size(), 1); + } + + /** + * + * Method: deQueue() + * + */ + @Test + public void testDeQueue() throws Exception { + queue.enQueue("1"); + queue.enQueue("2"); +// queue.deQueue(); + assertEquals("dequeue element ",queue.deQueue(),"1"); + assertEquals("size ", queue.size(), 1); + + } + + /** + * + * Method: isEmpty() + * + */ + @Test + public void testIsEmpty() throws Exception { + assertEquals("isEmpty method",queue.isEmpty(),true); + } + + /** + * + * Method: size() + * + */ + @Test + public void testSize() throws Exception { + queue.enQueue("1"); + queue.enQueue("2"); + assertEquals("size method", queue.size(),2); + } + + +} diff --git a/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java new file mode 100644 index 0000000000..a90af5d720 --- /dev/null +++ b/group02/435994736Learning/src/test/java/com/github/lhpmatlab/coding2017/basic/MyStackTest.java @@ -0,0 +1,104 @@ +package com.github.lhpmatlab.coding2017.basic; + +import org.junit.Test; +import org.junit.Before; +import org.junit.After; + +import static org.junit.Assert.*; + +/** +* MyStack Tester. +* +* @author +* @since
���� 26, 2017
+* @version 1.0 +*/ +public class MyStackTest { + + MyStack stack; + + + @Before + public void init() throws Exception { + stack = new MyStack<>(); + } + + @After + public void after() throws Exception { + } + + /** + * + * Method: push(T t) + * + */ + @Test + public void testPush() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + assertEquals("pust stack ", stack.size(),1); + } + + /** + * + * Method: pop() + * + */ + @Test + public void testPop() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + stack.push("2"); + stack.pop(); + assertEquals("after pop ",stack.size(),1); + } + + /** + * + * Method: peek() + * + */ + @Test + public void testPeek() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + stack.push("2"); + assertEquals("peek ", stack.peek(),"2"); + } + + /** + *测试判空方法 + * Method: isEmpty() + * + */ + @Test + public void testIsEmpty() throws Exception { + assertEquals("stack is empty ", stack.isEmpty(), true); + } + + /** + *测试判空方法,不为空的情况 + * Method: isEmpty() + * + */ + @Test + public void testIsNotEmpty() throws Exception { + stack.push("1"); + assertEquals("stack is empty ", stack.isEmpty(), false); + } + + /** + * + * Method: size() + * + */ + @Test + public void testSize() throws Exception { + assertEquals("init stack ", stack.size(), 0); + stack.push("1"); + stack.push("2"); + assertEquals("size is 2", stack.size(), 2); + } + + +}