From b0cfea5cf5de095ae7f79cfa116bd8db38ab1a60 Mon Sep 17 00:00:00 2001 From: Samson Shenglu Cao Date: Sat, 25 Feb 2017 15:05:35 +0800 Subject: [PATCH 1/6] 1st commit --- .../src/com/coding/basic/ArrayList.java | 106 ++++++++++++++ .../src/com/coding/basic/BinaryTreeNode.java | 52 +++++++ .../src/com/coding/basic/Iterator.java | 6 + .../src/com/coding/basic/LinkedList.java | 134 ++++++++++++++++++ .../972815123/src/com/coding/basic/List.java | 9 ++ .../src/com/coding/basic/MainTest.java | 21 +++ .../972815123/src/com/coding/basic/Queue.java | 28 ++++ .../972815123/src/com/coding/basic/Stack.java | 31 ++++ 8 files changed, 387 insertions(+) create mode 100644 group19/972815123/src/com/coding/basic/ArrayList.java create mode 100644 group19/972815123/src/com/coding/basic/BinaryTreeNode.java create mode 100644 group19/972815123/src/com/coding/basic/Iterator.java create mode 100644 group19/972815123/src/com/coding/basic/LinkedList.java create mode 100644 group19/972815123/src/com/coding/basic/List.java create mode 100644 group19/972815123/src/com/coding/basic/MainTest.java create mode 100644 group19/972815123/src/com/coding/basic/Queue.java create mode 100644 group19/972815123/src/com/coding/basic/Stack.java diff --git a/group19/972815123/src/com/coding/basic/ArrayList.java b/group19/972815123/src/com/coding/basic/ArrayList.java new file mode 100644 index 0000000000..3e8afb1ffc --- /dev/null +++ b/group19/972815123/src/com/coding/basic/ArrayList.java @@ -0,0 +1,106 @@ +package com.coding.basic; + +public class ArrayList implements List, Iterator { + + private int size; + private Object[] data; + public ArrayList() { + data = new Object[10]; + } + + @Override + public void add(Object o) { + size = size(); + if(data.length <= size){ + grow(); + } + data[size] = o; + size++; + } + + /* (non-Javadoc) + * @see dataStructure.List#add(java.lang.Object, int) + * 在第index元素前插入元素 + */ + @Override + public void add(int index, Object o){ + if (index >= size()){ + return; + } + size = size(); + if(data.length <= size){ + grow(); + } + for(int i = size , len = size - index; i < len; i -- ){ + data[i] = data[i -1]; + } + data[index] = o; + size++; + } + + @Override + public Object get(int index) { + return data[index]; + } + + @Override + public int size() { + return size; + } + + @Override + public Object remove(int index) { + if (index >= size()){ + return null; + }else{ + Object o = data[index]; + for(int i = index; i < size; i ++){ + data[i] = data[i + 1]; + } + data[size] = null; + size--; + return o; + } + + } + + private void grow(){ + size = size(); + int length = 0; + if(size < 10000){ + length = size * 2; + }else{ + length = (int)(size * 1.5); + } + size = length; + + Object[] temData = new Object[length]; + for(int i = 0, j = data.length; i < j; i ++){ + temData[i] = data[i]; + } + data = temData; + } + + private int index = 0; + @Override + public boolean hasNext() { + return index < size; + } + + @Override + public Object next() { + index++; + return data[index - 1]; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("["); + for(int i = 0; i < size; i++){ + sb.append(data[i].toString() + ","); + } + sb.append("]"); + return sb.toString(); + } + +} diff --git a/group19/972815123/src/com/coding/basic/BinaryTreeNode.java b/group19/972815123/src/com/coding/basic/BinaryTreeNode.java new file mode 100644 index 0000000000..d6518342d4 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/BinaryTreeNode.java @@ -0,0 +1,52 @@ +package com.coding.basic; + +public class BinaryTreeNode { + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + + public Object getData() { + return data; + } + public void setData(Object 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(Object o){ + Comparable co = (Comparable)o; + Comparable coData = (Comparable)data; + BinaryTreeNode result = null; + if(co.compareTo(data) > 0){ + if(null == right){ + right = new BinaryTreeNode(); + right.data = o; + result = right; + return right; + }else{ + right.insert(o); + } + }else{ + if(null == left){ + left = new BinaryTreeNode(); + left.data = o; + result = left; + return left; + }else{ + left.insert(o); + } + } + return result; + } +} diff --git a/group19/972815123/src/com/coding/basic/Iterator.java b/group19/972815123/src/com/coding/basic/Iterator.java new file mode 100644 index 0000000000..e7cbd474ec --- /dev/null +++ b/group19/972815123/src/com/coding/basic/Iterator.java @@ -0,0 +1,6 @@ +package com.coding.basic; + +public interface Iterator { + public boolean hasNext(); + public Object next(); +} diff --git a/group19/972815123/src/com/coding/basic/LinkedList.java b/group19/972815123/src/com/coding/basic/LinkedList.java new file mode 100644 index 0000000000..04de763349 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/LinkedList.java @@ -0,0 +1,134 @@ +package com.coding.basic; + +public class LinkedList implements List,Iterator { + + private Node head; + private Node last; + private int size = 0; + + public LinkedList() { + head = new Node(); + } + + @Override + public void add(Object o) { + Node newNode = new Node(); + Node last = head; + while(last.next != null){ + last = last.next; + } + last.next = newNode; + newNode.prev = last; + last = newNode; + size++; + } + + @Override + public void add(int index, Object o) { + Node newNode = new Node(); + Node indexNode = head ; + int i = 0; + while(i == index){ + indexNode = indexNode.next; + i++; + } + Node indexNextNode = indexNode.next; + indexNode.next = newNode; + newNode.prev = indexNode; + newNode.next = indexNextNode; + indexNextNode.prev = newNode; + size ++; + } + + @Override + public Object get(int index) { + Node indexNode = head; + int i = 0; + while(i == index){ + indexNode = indexNode.next; + i++; + } + return indexNode; + } + + @Override + public int size() { + return size; + } + + @Override + public Object remove(int index) { + Node indexNode = head ; + int i = 0; + while(i == index){ + + indexNode = indexNode.next; + i++; + } + Object o = indexNode.prev; + Node indexNextNode = indexNode.next; + Node indexPrevNode = indexNode.prev; + + indexNextNode.prev = indexPrevNode; + indexPrevNode.next = indexNextNode; + + indexNode.next = null; + indexNode.prev = null; + size--; + return o; + } + + public void addFirst(Object o){ + Node newNode = new Node(); + newNode.data = o; + newNode.next = head; + head.prev = newNode; + head = newNode; + size ++; + } + public void addLast(Object o){ + Node newNode = new Node(); + newNode.data = o; + newNode.prev = last; + last.next = newNode; + last = newNode; + size ++; + } + public Object removeFirst(){ + Node ret = head; + head = head.next; + head.prev = null; + size--; + return ret; + } + public Object removeLast(){ + Node ret = last; + last = last.prev; + last.next = null; + size--; + return ret; + } + public Iterator iterator(){ + return null; + } + + + private static class Node{ + Object data; + Node next; + Node prev; + } + + private Node index = head; + @Override + public boolean hasNext() { + return index != null; + } + + @Override + public Object next() { + Node tem = index; + index = index.next; + return tem; + } +} diff --git a/group19/972815123/src/com/coding/basic/List.java b/group19/972815123/src/com/coding/basic/List.java new file mode 100644 index 0000000000..10d13b5832 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/List.java @@ -0,0 +1,9 @@ +package com.coding.basic; + +public interface List { + public void add(Object o); + public void add(int index, Object o); + public Object get(int index); + public Object remove(int index); + public int size(); +} diff --git a/group19/972815123/src/com/coding/basic/MainTest.java b/group19/972815123/src/com/coding/basic/MainTest.java new file mode 100644 index 0000000000..504e2759e8 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/MainTest.java @@ -0,0 +1,21 @@ +package com.coding.basic; + +public class MainTest { + + public static void main(String[] args) { + ArrayList list = new ArrayList(); + list.add(1); + list.add(2); + list.add(3); + list.add(4); + list.add("this is the fifth"); + System.out.println(list); + System.out.println(list.size()); + System.out.println(list.get(3)); + + while(list.hasNext()){ + System.out.println(list.next()); + } + } + +} diff --git a/group19/972815123/src/com/coding/basic/Queue.java b/group19/972815123/src/com/coding/basic/Queue.java new file mode 100644 index 0000000000..6f03f6052b --- /dev/null +++ b/group19/972815123/src/com/coding/basic/Queue.java @@ -0,0 +1,28 @@ +package com.coding.basic; + +public class Queue { + private LinkedList data; + private int size; + + public Queue(){ + data = new LinkedList(); + } + + public void enQueue(Object o){ + data.addLast(o); + size++; + } + + public Object deQueue(){ + size --; + return data.removeFirst(); + } + + public boolean isEmpty(){ + return size == 0; + } + + public int size(){ + return size; + } +} diff --git a/group19/972815123/src/com/coding/basic/Stack.java b/group19/972815123/src/com/coding/basic/Stack.java new file mode 100644 index 0000000000..fcfda97a71 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/Stack.java @@ -0,0 +1,31 @@ +package com.coding.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(){ + if(size > 0){ + size--; + return elementData.remove(size); + }else{ + return null; + } + } + + public Object peek(){ + return elementData.get(size); + } + public boolean isEmpty(){ + return size == 0; + } + public int size(){ + return size; + } +} From 05d029396f5d8dd36af9dc8057ef801568515213 Mon Sep 17 00:00:00 2001 From: Samson Shenglu Cao Date: Sat, 25 Feb 2017 15:15:08 +0800 Subject: [PATCH 2/6] Revert "test" This reverts commit be853d34d2135a838bd8db390eff49ff74f641bb. --- .gitignore | 9 --------- group19/2558178127/.gitignore | 9 --------- group19/2558178127/src/com/cn/kevin/Test.java | 5 ----- 3 files changed, 23 deletions(-) delete mode 100644 group19/2558178127/.gitignore delete mode 100644 group19/2558178127/src/com/cn/kevin/Test.java diff --git a/.gitignore b/.gitignore index fcfd185b8c..ec55baf87d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,12 +14,3 @@ hs_err_pid* #ide config .metadata .recommenders - -*.settings -*.project -*.classpath -*/.settings -*.iml -/.idea -/**/target/**/* - diff --git a/group19/2558178127/.gitignore b/group19/2558178127/.gitignore deleted file mode 100644 index ee46440140..0000000000 --- a/group19/2558178127/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/bin/ -*.class -*.settings -*.project -*.classpath -*/.settings -*.iml -/.idea -/**/target/**/* diff --git a/group19/2558178127/src/com/cn/kevin/Test.java b/group19/2558178127/src/com/cn/kevin/Test.java deleted file mode 100644 index f5a6ce104a..0000000000 --- a/group19/2558178127/src/com/cn/kevin/Test.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.cn.kevin; - -public class Test { - -} From 1fa7bbae6fe2f63df3090d4d22a98d8ba143a3c7 Mon Sep 17 00:00:00 2001 From: Samson Shenglu Cao Date: Sat, 25 Feb 2017 15:21:18 +0800 Subject: [PATCH 3/6] revert "Revert "test"" This reverts commit 05d029396f5d8dd36af9dc8057ef801568515213. --- .gitignore | 9 +++++++++ group19/2558178127/.gitignore | 9 +++++++++ group19/2558178127/src/com/cn/kevin/Test.java | 5 +++++ 3 files changed, 23 insertions(+) create mode 100644 group19/2558178127/.gitignore create mode 100644 group19/2558178127/src/com/cn/kevin/Test.java diff --git a/.gitignore b/.gitignore index ec55baf87d..fcfd185b8c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,12 @@ hs_err_pid* #ide config .metadata .recommenders + +*.settings +*.project +*.classpath +*/.settings +*.iml +/.idea +/**/target/**/* + diff --git a/group19/2558178127/.gitignore b/group19/2558178127/.gitignore new file mode 100644 index 0000000000..ee46440140 --- /dev/null +++ b/group19/2558178127/.gitignore @@ -0,0 +1,9 @@ +/bin/ +*.class +*.settings +*.project +*.classpath +*/.settings +*.iml +/.idea +/**/target/**/* diff --git a/group19/2558178127/src/com/cn/kevin/Test.java b/group19/2558178127/src/com/cn/kevin/Test.java new file mode 100644 index 0000000000..f5a6ce104a --- /dev/null +++ b/group19/2558178127/src/com/cn/kevin/Test.java @@ -0,0 +1,5 @@ +package com.cn.kevin; + +public class Test { + +} From 3264b8f26e6b7b7197822368efb4731aa83526e1 Mon Sep 17 00:00:00 2001 From: Samson Shenglu Cao Date: Sat, 25 Feb 2017 15:24:16 +0800 Subject: [PATCH 4/6] Revert "1st commit" This reverts commit b0cfea5cf5de095ae7f79cfa116bd8db38ab1a60. --- .../src/com/coding/basic/ArrayList.java | 106 -------------- .../src/com/coding/basic/BinaryTreeNode.java | 52 ------- .../src/com/coding/basic/Iterator.java | 6 - .../src/com/coding/basic/LinkedList.java | 134 ------------------ .../972815123/src/com/coding/basic/List.java | 9 -- .../src/com/coding/basic/MainTest.java | 21 --- .../972815123/src/com/coding/basic/Queue.java | 28 ---- .../972815123/src/com/coding/basic/Stack.java | 31 ---- 8 files changed, 387 deletions(-) delete mode 100644 group19/972815123/src/com/coding/basic/ArrayList.java delete mode 100644 group19/972815123/src/com/coding/basic/BinaryTreeNode.java delete mode 100644 group19/972815123/src/com/coding/basic/Iterator.java delete mode 100644 group19/972815123/src/com/coding/basic/LinkedList.java delete mode 100644 group19/972815123/src/com/coding/basic/List.java delete mode 100644 group19/972815123/src/com/coding/basic/MainTest.java delete mode 100644 group19/972815123/src/com/coding/basic/Queue.java delete mode 100644 group19/972815123/src/com/coding/basic/Stack.java diff --git a/group19/972815123/src/com/coding/basic/ArrayList.java b/group19/972815123/src/com/coding/basic/ArrayList.java deleted file mode 100644 index 3e8afb1ffc..0000000000 --- a/group19/972815123/src/com/coding/basic/ArrayList.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.coding.basic; - -public class ArrayList implements List, Iterator { - - private int size; - private Object[] data; - public ArrayList() { - data = new Object[10]; - } - - @Override - public void add(Object o) { - size = size(); - if(data.length <= size){ - grow(); - } - data[size] = o; - size++; - } - - /* (non-Javadoc) - * @see dataStructure.List#add(java.lang.Object, int) - * 在第index元素前插入元素 - */ - @Override - public void add(int index, Object o){ - if (index >= size()){ - return; - } - size = size(); - if(data.length <= size){ - grow(); - } - for(int i = size , len = size - index; i < len; i -- ){ - data[i] = data[i -1]; - } - data[index] = o; - size++; - } - - @Override - public Object get(int index) { - return data[index]; - } - - @Override - public int size() { - return size; - } - - @Override - public Object remove(int index) { - if (index >= size()){ - return null; - }else{ - Object o = data[index]; - for(int i = index; i < size; i ++){ - data[i] = data[i + 1]; - } - data[size] = null; - size--; - return o; - } - - } - - private void grow(){ - size = size(); - int length = 0; - if(size < 10000){ - length = size * 2; - }else{ - length = (int)(size * 1.5); - } - size = length; - - Object[] temData = new Object[length]; - for(int i = 0, j = data.length; i < j; i ++){ - temData[i] = data[i]; - } - data = temData; - } - - private int index = 0; - @Override - public boolean hasNext() { - return index < size; - } - - @Override - public Object next() { - index++; - return data[index - 1]; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("["); - for(int i = 0; i < size; i++){ - sb.append(data[i].toString() + ","); - } - sb.append("]"); - return sb.toString(); - } - -} diff --git a/group19/972815123/src/com/coding/basic/BinaryTreeNode.java b/group19/972815123/src/com/coding/basic/BinaryTreeNode.java deleted file mode 100644 index d6518342d4..0000000000 --- a/group19/972815123/src/com/coding/basic/BinaryTreeNode.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.coding.basic; - -public class BinaryTreeNode { - private Object data; - private BinaryTreeNode left; - private BinaryTreeNode right; - - public Object getData() { - return data; - } - public void setData(Object 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(Object o){ - Comparable co = (Comparable)o; - Comparable coData = (Comparable)data; - BinaryTreeNode result = null; - if(co.compareTo(data) > 0){ - if(null == right){ - right = new BinaryTreeNode(); - right.data = o; - result = right; - return right; - }else{ - right.insert(o); - } - }else{ - if(null == left){ - left = new BinaryTreeNode(); - left.data = o; - result = left; - return left; - }else{ - left.insert(o); - } - } - return result; - } -} diff --git a/group19/972815123/src/com/coding/basic/Iterator.java b/group19/972815123/src/com/coding/basic/Iterator.java deleted file mode 100644 index e7cbd474ec..0000000000 --- a/group19/972815123/src/com/coding/basic/Iterator.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.coding.basic; - -public interface Iterator { - public boolean hasNext(); - public Object next(); -} diff --git a/group19/972815123/src/com/coding/basic/LinkedList.java b/group19/972815123/src/com/coding/basic/LinkedList.java deleted file mode 100644 index 04de763349..0000000000 --- a/group19/972815123/src/com/coding/basic/LinkedList.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.coding.basic; - -public class LinkedList implements List,Iterator { - - private Node head; - private Node last; - private int size = 0; - - public LinkedList() { - head = new Node(); - } - - @Override - public void add(Object o) { - Node newNode = new Node(); - Node last = head; - while(last.next != null){ - last = last.next; - } - last.next = newNode; - newNode.prev = last; - last = newNode; - size++; - } - - @Override - public void add(int index, Object o) { - Node newNode = new Node(); - Node indexNode = head ; - int i = 0; - while(i == index){ - indexNode = indexNode.next; - i++; - } - Node indexNextNode = indexNode.next; - indexNode.next = newNode; - newNode.prev = indexNode; - newNode.next = indexNextNode; - indexNextNode.prev = newNode; - size ++; - } - - @Override - public Object get(int index) { - Node indexNode = head; - int i = 0; - while(i == index){ - indexNode = indexNode.next; - i++; - } - return indexNode; - } - - @Override - public int size() { - return size; - } - - @Override - public Object remove(int index) { - Node indexNode = head ; - int i = 0; - while(i == index){ - - indexNode = indexNode.next; - i++; - } - Object o = indexNode.prev; - Node indexNextNode = indexNode.next; - Node indexPrevNode = indexNode.prev; - - indexNextNode.prev = indexPrevNode; - indexPrevNode.next = indexNextNode; - - indexNode.next = null; - indexNode.prev = null; - size--; - return o; - } - - public void addFirst(Object o){ - Node newNode = new Node(); - newNode.data = o; - newNode.next = head; - head.prev = newNode; - head = newNode; - size ++; - } - public void addLast(Object o){ - Node newNode = new Node(); - newNode.data = o; - newNode.prev = last; - last.next = newNode; - last = newNode; - size ++; - } - public Object removeFirst(){ - Node ret = head; - head = head.next; - head.prev = null; - size--; - return ret; - } - public Object removeLast(){ - Node ret = last; - last = last.prev; - last.next = null; - size--; - return ret; - } - public Iterator iterator(){ - return null; - } - - - private static class Node{ - Object data; - Node next; - Node prev; - } - - private Node index = head; - @Override - public boolean hasNext() { - return index != null; - } - - @Override - public Object next() { - Node tem = index; - index = index.next; - return tem; - } -} diff --git a/group19/972815123/src/com/coding/basic/List.java b/group19/972815123/src/com/coding/basic/List.java deleted file mode 100644 index 10d13b5832..0000000000 --- a/group19/972815123/src/com/coding/basic/List.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.coding.basic; - -public interface List { - public void add(Object o); - public void add(int index, Object o); - public Object get(int index); - public Object remove(int index); - public int size(); -} diff --git a/group19/972815123/src/com/coding/basic/MainTest.java b/group19/972815123/src/com/coding/basic/MainTest.java deleted file mode 100644 index 504e2759e8..0000000000 --- a/group19/972815123/src/com/coding/basic/MainTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.coding.basic; - -public class MainTest { - - public static void main(String[] args) { - ArrayList list = new ArrayList(); - list.add(1); - list.add(2); - list.add(3); - list.add(4); - list.add("this is the fifth"); - System.out.println(list); - System.out.println(list.size()); - System.out.println(list.get(3)); - - while(list.hasNext()){ - System.out.println(list.next()); - } - } - -} diff --git a/group19/972815123/src/com/coding/basic/Queue.java b/group19/972815123/src/com/coding/basic/Queue.java deleted file mode 100644 index 6f03f6052b..0000000000 --- a/group19/972815123/src/com/coding/basic/Queue.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.coding.basic; - -public class Queue { - private LinkedList data; - private int size; - - public Queue(){ - data = new LinkedList(); - } - - public void enQueue(Object o){ - data.addLast(o); - size++; - } - - public Object deQueue(){ - size --; - return data.removeFirst(); - } - - public boolean isEmpty(){ - return size == 0; - } - - public int size(){ - return size; - } -} diff --git a/group19/972815123/src/com/coding/basic/Stack.java b/group19/972815123/src/com/coding/basic/Stack.java deleted file mode 100644 index fcfda97a71..0000000000 --- a/group19/972815123/src/com/coding/basic/Stack.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.coding.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(){ - if(size > 0){ - size--; - return elementData.remove(size); - }else{ - return null; - } - } - - public Object peek(){ - return elementData.get(size); - } - public boolean isEmpty(){ - return size == 0; - } - public int size(){ - return size; - } -} From 8db7091445169500702e0e489f629d269052912a Mon Sep 17 00:00:00 2001 From: Samson Shenglu Cao Date: Sat, 25 Feb 2017 15:45:35 +0800 Subject: [PATCH 5/6] 1st test --- group19/972815123/test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 group19/972815123/test.txt diff --git a/group19/972815123/test.txt b/group19/972815123/test.txt new file mode 100644 index 0000000000..e69de29bb2 From 1ae8f1893372faaf4756ad0e5e831db89e56e956 Mon Sep 17 00:00:00 2001 From: Samson Shenglu Cao Date: Sat, 25 Feb 2017 15:47:00 +0800 Subject: [PATCH 6/6] coding homework --- .../src/com/coding/basic/ArrayList.java | 106 ++++++++++++++ .../src/com/coding/basic/BinaryTreeNode.java | 52 +++++++ .../src/com/coding/basic/Iterator.java | 6 + .../src/com/coding/basic/LinkedList.java | 134 ++++++++++++++++++ .../972815123/src/com/coding/basic/List.java | 9 ++ .../src/com/coding/basic/MainTest.java | 21 +++ .../972815123/src/com/coding/basic/Queue.java | 28 ++++ .../972815123/src/com/coding/basic/Stack.java | 31 ++++ 8 files changed, 387 insertions(+) create mode 100644 group19/972815123/src/com/coding/basic/ArrayList.java create mode 100644 group19/972815123/src/com/coding/basic/BinaryTreeNode.java create mode 100644 group19/972815123/src/com/coding/basic/Iterator.java create mode 100644 group19/972815123/src/com/coding/basic/LinkedList.java create mode 100644 group19/972815123/src/com/coding/basic/List.java create mode 100644 group19/972815123/src/com/coding/basic/MainTest.java create mode 100644 group19/972815123/src/com/coding/basic/Queue.java create mode 100644 group19/972815123/src/com/coding/basic/Stack.java diff --git a/group19/972815123/src/com/coding/basic/ArrayList.java b/group19/972815123/src/com/coding/basic/ArrayList.java new file mode 100644 index 0000000000..3e8afb1ffc --- /dev/null +++ b/group19/972815123/src/com/coding/basic/ArrayList.java @@ -0,0 +1,106 @@ +package com.coding.basic; + +public class ArrayList implements List, Iterator { + + private int size; + private Object[] data; + public ArrayList() { + data = new Object[10]; + } + + @Override + public void add(Object o) { + size = size(); + if(data.length <= size){ + grow(); + } + data[size] = o; + size++; + } + + /* (non-Javadoc) + * @see dataStructure.List#add(java.lang.Object, int) + * 在第index元素前插入元素 + */ + @Override + public void add(int index, Object o){ + if (index >= size()){ + return; + } + size = size(); + if(data.length <= size){ + grow(); + } + for(int i = size , len = size - index; i < len; i -- ){ + data[i] = data[i -1]; + } + data[index] = o; + size++; + } + + @Override + public Object get(int index) { + return data[index]; + } + + @Override + public int size() { + return size; + } + + @Override + public Object remove(int index) { + if (index >= size()){ + return null; + }else{ + Object o = data[index]; + for(int i = index; i < size; i ++){ + data[i] = data[i + 1]; + } + data[size] = null; + size--; + return o; + } + + } + + private void grow(){ + size = size(); + int length = 0; + if(size < 10000){ + length = size * 2; + }else{ + length = (int)(size * 1.5); + } + size = length; + + Object[] temData = new Object[length]; + for(int i = 0, j = data.length; i < j; i ++){ + temData[i] = data[i]; + } + data = temData; + } + + private int index = 0; + @Override + public boolean hasNext() { + return index < size; + } + + @Override + public Object next() { + index++; + return data[index - 1]; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("["); + for(int i = 0; i < size; i++){ + sb.append(data[i].toString() + ","); + } + sb.append("]"); + return sb.toString(); + } + +} diff --git a/group19/972815123/src/com/coding/basic/BinaryTreeNode.java b/group19/972815123/src/com/coding/basic/BinaryTreeNode.java new file mode 100644 index 0000000000..d6518342d4 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/BinaryTreeNode.java @@ -0,0 +1,52 @@ +package com.coding.basic; + +public class BinaryTreeNode { + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + + public Object getData() { + return data; + } + public void setData(Object 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(Object o){ + Comparable co = (Comparable)o; + Comparable coData = (Comparable)data; + BinaryTreeNode result = null; + if(co.compareTo(data) > 0){ + if(null == right){ + right = new BinaryTreeNode(); + right.data = o; + result = right; + return right; + }else{ + right.insert(o); + } + }else{ + if(null == left){ + left = new BinaryTreeNode(); + left.data = o; + result = left; + return left; + }else{ + left.insert(o); + } + } + return result; + } +} diff --git a/group19/972815123/src/com/coding/basic/Iterator.java b/group19/972815123/src/com/coding/basic/Iterator.java new file mode 100644 index 0000000000..e7cbd474ec --- /dev/null +++ b/group19/972815123/src/com/coding/basic/Iterator.java @@ -0,0 +1,6 @@ +package com.coding.basic; + +public interface Iterator { + public boolean hasNext(); + public Object next(); +} diff --git a/group19/972815123/src/com/coding/basic/LinkedList.java b/group19/972815123/src/com/coding/basic/LinkedList.java new file mode 100644 index 0000000000..04de763349 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/LinkedList.java @@ -0,0 +1,134 @@ +package com.coding.basic; + +public class LinkedList implements List,Iterator { + + private Node head; + private Node last; + private int size = 0; + + public LinkedList() { + head = new Node(); + } + + @Override + public void add(Object o) { + Node newNode = new Node(); + Node last = head; + while(last.next != null){ + last = last.next; + } + last.next = newNode; + newNode.prev = last; + last = newNode; + size++; + } + + @Override + public void add(int index, Object o) { + Node newNode = new Node(); + Node indexNode = head ; + int i = 0; + while(i == index){ + indexNode = indexNode.next; + i++; + } + Node indexNextNode = indexNode.next; + indexNode.next = newNode; + newNode.prev = indexNode; + newNode.next = indexNextNode; + indexNextNode.prev = newNode; + size ++; + } + + @Override + public Object get(int index) { + Node indexNode = head; + int i = 0; + while(i == index){ + indexNode = indexNode.next; + i++; + } + return indexNode; + } + + @Override + public int size() { + return size; + } + + @Override + public Object remove(int index) { + Node indexNode = head ; + int i = 0; + while(i == index){ + + indexNode = indexNode.next; + i++; + } + Object o = indexNode.prev; + Node indexNextNode = indexNode.next; + Node indexPrevNode = indexNode.prev; + + indexNextNode.prev = indexPrevNode; + indexPrevNode.next = indexNextNode; + + indexNode.next = null; + indexNode.prev = null; + size--; + return o; + } + + public void addFirst(Object o){ + Node newNode = new Node(); + newNode.data = o; + newNode.next = head; + head.prev = newNode; + head = newNode; + size ++; + } + public void addLast(Object o){ + Node newNode = new Node(); + newNode.data = o; + newNode.prev = last; + last.next = newNode; + last = newNode; + size ++; + } + public Object removeFirst(){ + Node ret = head; + head = head.next; + head.prev = null; + size--; + return ret; + } + public Object removeLast(){ + Node ret = last; + last = last.prev; + last.next = null; + size--; + return ret; + } + public Iterator iterator(){ + return null; + } + + + private static class Node{ + Object data; + Node next; + Node prev; + } + + private Node index = head; + @Override + public boolean hasNext() { + return index != null; + } + + @Override + public Object next() { + Node tem = index; + index = index.next; + return tem; + } +} diff --git a/group19/972815123/src/com/coding/basic/List.java b/group19/972815123/src/com/coding/basic/List.java new file mode 100644 index 0000000000..10d13b5832 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/List.java @@ -0,0 +1,9 @@ +package com.coding.basic; + +public interface List { + public void add(Object o); + public void add(int index, Object o); + public Object get(int index); + public Object remove(int index); + public int size(); +} diff --git a/group19/972815123/src/com/coding/basic/MainTest.java b/group19/972815123/src/com/coding/basic/MainTest.java new file mode 100644 index 0000000000..504e2759e8 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/MainTest.java @@ -0,0 +1,21 @@ +package com.coding.basic; + +public class MainTest { + + public static void main(String[] args) { + ArrayList list = new ArrayList(); + list.add(1); + list.add(2); + list.add(3); + list.add(4); + list.add("this is the fifth"); + System.out.println(list); + System.out.println(list.size()); + System.out.println(list.get(3)); + + while(list.hasNext()){ + System.out.println(list.next()); + } + } + +} diff --git a/group19/972815123/src/com/coding/basic/Queue.java b/group19/972815123/src/com/coding/basic/Queue.java new file mode 100644 index 0000000000..6f03f6052b --- /dev/null +++ b/group19/972815123/src/com/coding/basic/Queue.java @@ -0,0 +1,28 @@ +package com.coding.basic; + +public class Queue { + private LinkedList data; + private int size; + + public Queue(){ + data = new LinkedList(); + } + + public void enQueue(Object o){ + data.addLast(o); + size++; + } + + public Object deQueue(){ + size --; + return data.removeFirst(); + } + + public boolean isEmpty(){ + return size == 0; + } + + public int size(){ + return size; + } +} diff --git a/group19/972815123/src/com/coding/basic/Stack.java b/group19/972815123/src/com/coding/basic/Stack.java new file mode 100644 index 0000000000..fcfda97a71 --- /dev/null +++ b/group19/972815123/src/com/coding/basic/Stack.java @@ -0,0 +1,31 @@ +package com.coding.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(){ + if(size > 0){ + size--; + return elementData.remove(size); + }else{ + return null; + } + } + + public Object peek(){ + return elementData.get(size); + } + public boolean isEmpty(){ + return size == 0; + } + public int size(){ + return size; + } +}