diff --git a/.gitignore b/.gitignore
index 2a5296f902..7f06ac1c28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,15 +7,25 @@
*.war
*.ear
+*.iml
+*.idea
+
+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
#ide config
.metadata
.recommenders
+
+
+#macOS
+.DS_Store
+
.idea/
*.iml
rebel.*
.rebel.*
target
+
diff --git a/group16/1012075117/DataStructure219/.classpath b/group16/1012075117/DataStructure219/.classpath
new file mode 100644
index 0000000000..fceb4801b5
--- /dev/null
+++ b/group16/1012075117/DataStructure219/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/group16/1012075117/DataStructure219/.project b/group16/1012075117/DataStructure219/.project
new file mode 100644
index 0000000000..567baae65f
--- /dev/null
+++ b/group16/1012075117/DataStructure219/.project
@@ -0,0 +1,17 @@
+
+
+ DataStructure219
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/group16/1012075117/DataStructure219/.settings/org.eclipse.jdt.core.prefs b/group16/1012075117/DataStructure219/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..3a21537071
--- /dev/null
+++ b/group16/1012075117/DataStructure219/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/ArrayList.java b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/ArrayList.java
new file mode 100644
index 0000000000..a1d46a21d8
--- /dev/null
+++ b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/ArrayList.java
@@ -0,0 +1,94 @@
+package com.stackwei.DataStructure;
+
+/**
+ *
+ * @author stackwei -2017.2.25
+ *
+ */
+public class ArrayList implements List {
+
+ private int flag = -1;
+ private static final int DEFAULT_CAPACITY = 1;
+ private Object[] elementData = new Object[DEFAULT_CAPACITY];
+
+ @Override
+ public void add(Object element) {
+ // 当要添加数据的位置已经超过数组长度时,增长数组长度
+ if (size() + 1 == elementData.length) {
+ grow();
+ }
+ elementData[flag + 1] = element;
+ flag++;
+ }
+
+ @Override
+ public void add(int index, Object element) {
+ if (index < 0 || index > getFlag() + 1) {
+ System.out.println("在--" + index + "--添加的--" + element + "--无效,因为越界了!");
+ return;
+ }
+ // 数组长度永远比已存数据大一个。
+ if (size() + 1 == elementData.length) {
+ grow();
+ }
+ elementData[index] = element;
+ if (index > getFlag()) {
+ flag++;
+ }
+ }
+
+ @Override
+ public Object get(int index) {
+ if (index < 0 || index > getFlag()) {
+ System.out.print("在--" + index + "--的get无效,因为越界了!");
+ return null;
+ }
+ return elementData[index];
+ }
+
+ @Override
+ public Object remove(int index) {
+ if (index < 0 || index > getFlag()) {
+ System.out.println("在--" + index + "--的remove无效,因为越界了!");
+ return null;
+ }
+ Object oldValue = elementData[index];
+ elementData[index] = null;
+ // 将删除处后面的数据往前移一格。
+ Object[] data2 = new Object[elementData.length - 1];
+ System.arraycopy(elementData, 0, data2, 0, getFlag());
+ elementData = data2;
+ flag--;
+ return oldValue;
+ }
+
+ @Override
+ public int size() {
+ return getFlag() + 1;
+ }
+
+ public int getFlag() {
+ return flag;
+ }
+
+ private void grow() {
+ Object[] data2 = new Object[elementData.length + 1];
+ System.arraycopy(elementData, 0, data2, 0, getFlag() + 2);// 最后一个参数是需要复制的数据的数量。
+ elementData = data2;
+ }
+
+ /**
+ * 测试用例
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ ArrayList al = new ArrayList();
+ al.add(0, 99);
+ al.add(1, 100);
+ System.out.println(al.get(1));
+ al.remove(1);
+ System.out.println(al.get(1));
+ System.out.println(al.size());
+ }
+}
\ No newline at end of file
diff --git a/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/LinkedList.java b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/LinkedList.java
new file mode 100644
index 0000000000..a1c728f0a1
--- /dev/null
+++ b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/LinkedList.java
@@ -0,0 +1,194 @@
+package com.stackwei.DataStructure;
+
+/**
+ *
+ * @author stackwei -2017.2.25
+ *
+ */
+public class LinkedList implements List {
+
+ private Node head = null;
+ private Node last = null;
+ private int size = 0;
+
+ private static class Node {
+ Object item;
+ Node prev;
+ Node next;
+
+ public Node(Node prev, Object item, Node next) {
+ this.prev = prev;
+ this.item = item;
+ this.next = next;
+ }
+ }
+
+ @Override
+ public void add(Object element) {
+ addLast(element);
+ }
+
+ @Override
+ public void add(int index, Object element) {
+ if (index < 0 || index > size) {
+ System.out.println("操作无效,越界了");
+ return;
+ }
+ if (index == 0) {
+ addFirst(element);
+ return;
+ }
+ if (index == size) {
+ addLast(element);
+ return;
+ }
+ Node indexNode = node(index);
+ Node newNode = new Node(indexNode.prev, element, indexNode);
+ indexNode.prev.next = newNode;
+ indexNode.prev = newNode;
+ size++;
+ }
+
+ @Override
+ public Object get(int index) {
+ if (index < 0 || index >= size) {
+ System.out.println("查询无效,越界了");
+ return null;
+ }
+ if (index == 0) {
+ return head.item;
+ }
+ return node(index).item;
+ }
+
+ @Override
+ public Object remove(int index) {
+ if (index < 0 || index > size) {
+ System.out.println("是空的,无法删除");
+ return null;
+ }
+ if (index == 0) {
+ return removeFirst();
+ }
+ if (index == size - 1) {
+ return removeLast();
+ }
+ Node x = node(index);
+ final Object element = x.item;
+ final Node next = x.next;
+ final Node prev = x.prev;
+
+ if (prev == null) {
+ head = next;
+ } else {
+ prev.next = next;
+ x.prev = null;
+ }
+
+ if (next == null) {
+ last = prev;
+ } else {
+ next.prev = prev;
+ x.next = null;
+ }
+
+ x.item = null;
+ size--;
+ return element;
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+
+ private void addFirst(Object element) {
+ final Node f = head;
+ Node newNode = new Node(null, element, f);
+ head = newNode;
+ if (f == null)
+ last = newNode;
+ else
+ f.prev = newNode;
+ size++;
+ }
+
+ public void addLast(Object element) {
+ if (head == null) {
+ addFirst(element);
+ } else {
+ Node newNode = new Node(last, element, null);
+ last.next = newNode;
+ last = newNode;
+ size++;
+ }
+ }
+
+ public Object removeFirst() {
+ if (head == null) {
+ System.out.println("是空的,无法删除");
+ return null;
+ } else {
+ Node x = head;
+ Node next = head.next;
+ Object element = x.item;
+ x.item = null;
+ x.next = null;
+ head = next;
+ if (next == null)
+ last = null;
+ else
+ x.prev = null;
+ size--;
+ return element;
+ }
+ }
+
+ public Object removeLast() {
+ if (last == null) {
+ System.out.println("是空的,无法删除");
+ return null;
+ } else {
+ final Node l = last;
+ final Object element = l.item;
+ final Node p = l.prev;
+ l.item = null;
+ l.prev = null;
+ last = p;
+ if (p == null)
+ head = null;
+ else
+ p.next = null;
+ size--;
+ return element;
+ }
+ }
+
+ Node node(int index) {
+ if (index < (size >> 1)) {
+ Node x = head;
+ for (int i = 0; i < index; i++)
+ x = x.next;
+ return x;
+ } else {
+ Node x = last;
+ for (int i = size - 1; i > index; i--)
+ x = x.prev;
+ return x;
+ }
+ }
+
+ /**
+ * 测试用例
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ LinkedList ll = new LinkedList();
+ ll.add(0, "xxx");
+ ll.add(1, 111);
+ System.out.println(ll.size());
+ System.out.println(ll.get(2));
+
+ }
+}
\ No newline at end of file
diff --git a/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/List.java b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/List.java
new file mode 100644
index 0000000000..5226796141
--- /dev/null
+++ b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/List.java
@@ -0,0 +1,13 @@
+package com.stackwei.DataStructure;
+
+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/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/Queue.java b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/Queue.java
new file mode 100644
index 0000000000..4a227495e9
--- /dev/null
+++ b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/Queue.java
@@ -0,0 +1,52 @@
+package com.stackwei.DataStructure;
+
+/**
+ *
+ * @author stackwei -2017.2.25
+ *
+ */
+public class Queue {
+
+ private LinkedList ll = new LinkedList();
+
+ /**
+ * 在队尾添加数据
+ * @param element
+ */
+ public void enQueue(Object element) {
+ ll.addLast(element);
+ }
+
+ /**
+ * 删除队头数据
+ * @return
+ */
+ public Object deQueue() {
+ return ll.removeFirst();
+ }
+
+ /**
+ * 队列是否为空
+ * @return
+ */
+ public boolean isEmpty() {
+ if (ll.size() > 0) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 测试用例
+ * @param args
+ */
+ public static void main(String[] args) {
+ Queue q = new Queue();
+ q.enQueue(97);
+ q.enQueue(98);
+ q.enQueue(99);
+ System.out.println(q.isEmpty());
+ System.out.println(q.deQueue());
+ }
+
+}
diff --git a/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/Stack.java b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/Stack.java
new file mode 100644
index 0000000000..1b047ffafd
--- /dev/null
+++ b/group16/1012075117/DataStructure219/src/com/stackwei/DataStructure/Stack.java
@@ -0,0 +1,59 @@
+package com.stackwei.DataStructure;
+
+/**
+ *
+ * @author stackwei -2017.2.25
+ *
+ */
+public class Stack {
+
+ private ArrayList al = new ArrayList();
+
+ /**
+ * 进栈
+ * @param item
+ */
+ public void push(Object item) {
+ al.add(item);
+ }
+
+ /**
+ * 出栈
+ * @return
+ */
+ public Object pop() {
+ return al.remove(al.getFlag());
+ }
+
+ /**
+ * 获取栈顶元素
+ * @return
+ */
+ public Object peek() {
+ return al.get(al.getFlag());
+ }
+
+ /**
+ * 栈是否为空
+ * @return
+ */
+ public boolean isEmpty() {
+ if (al.getFlag() >= 0) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 测试用例
+ * @param args
+ */
+ public static void main(String[] args) {
+ Stack s = new Stack();
+ s.push(98);
+ s.push(99);
+ s.pop();
+ System.out.println(s.peek());
+ }
+
+}
diff --git a/group16/1154151360/.classpath b/group16/1154151360/.classpath
new file mode 100644
index 0000000000..fb5011632c
--- /dev/null
+++ b/group16/1154151360/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/group16/1154151360/.gitignore b/group16/1154151360/.gitignore
new file mode 100644
index 0000000000..ae3c172604
--- /dev/null
+++ b/group16/1154151360/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/group16/1154151360/.project b/group16/1154151360/.project
new file mode 100644
index 0000000000..f88388f6d7
--- /dev/null
+++ b/group16/1154151360/.project
@@ -0,0 +1,17 @@
+
+
+ DataStructure2
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/group16/1154151360/.settings/org.eclipse.core.resources.prefs b/group16/1154151360/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000..99f26c0203
--- /dev/null
+++ b/group16/1154151360/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/group16/1154151360/src/com/list/ArrayList.java b/group16/1154151360/src/com/list/ArrayList.java
new file mode 100644
index 0000000000..733dc0f341
--- /dev/null
+++ b/group16/1154151360/src/com/list/ArrayList.java
@@ -0,0 +1,93 @@
+package com.list;
+
+
+//ArrayList
+public class ArrayList {
+
+ private int size;
+
+ private Object [] elementData = new Object[10];
+
+ public boolean add(Object data){
+
+ getRow(size+1);
+ elementData[size++] = data;
+ return true;
+ }
+
+ public boolean add(int index, Object data){
+ if (index < 0 || index > elementData.length){
+ throw new IndexOutOfBoundsException("�±�Խ��");
+ }
+ getRow(size + 1);
+ Object object = elementData [index];
+ System.arraycopy(elementData, index,elementData , index + 1,size - index );
+ elementData[index] = data;
+ size++;
+ return true;
+ }
+
+ public Object get(int index){
+ if (index < 0 || index > elementData.length){
+ throw new IndexOutOfBoundsException("下标越界");
+ }
+ return elementData[index];
+ }
+
+ public Object remove(int index){
+ if (index < 0 || index > elementData.length){
+ throw new IndexOutOfBoundsException("下标越界");
+ }
+ Object object = elementData [index];
+ System.arraycopy(elementData, index + 1 , elementData, index, size - 1 - index);
+ elementData[size--]= null;
+ return object;
+ }
+
+
+ private void getRow(int num){
+ if (num > elementData.length ){
+ int oldLength = elementData.length;
+ int newLength = ((num + elementData.length) * 3) >> 2;
+ Object [] oldelements = elementData;
+ elementData = new Object[newLength];
+ System.arraycopy(oldelements, 0, elementData, 0, size);
+ }
+ }
+
+ public int size(){
+ return size;
+ }
+
+ public int length(){
+ return elementData.length;
+ }
+ public static void main(String[] args) {
+ ArrayList list = new ArrayList();
+
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+ list.add("E");
+ list.add("F");
+ list.add("G");
+ list.add("H");
+ list.add("I");
+ list.add("J");
+ list.add("K");
+ list.add("L");
+ list.add(2, 1);
+ System.out.println("elementsData.Length: "+list.length());
+ System.out.println("elementsData.size: "+list.size());
+ for (int i = 0; i < list.size; i++){
+ System.out.print(list.get(i)+ " ");
+ }
+ System.out.println(" ");
+ list.remove(2);
+
+ for (int i = 0; i < list.size; i++){
+ System.out.print(list.get(i)+ " ");
+ }
+ }
+}
diff --git a/group16/1154151360/src/com/list/LinkedList.java b/group16/1154151360/src/com/list/LinkedList.java
new file mode 100644
index 0000000000..46f61fb667
--- /dev/null
+++ b/group16/1154151360/src/com/list/LinkedList.java
@@ -0,0 +1,158 @@
+package com.list;
+
+public class LinkedList {
+
+ private int size;
+
+ private Node head;//头节点
+
+ Node current; //当前节点
+
+ public LinkedList(){
+ this.head = current = new Node(null);
+ this.size = 0;
+ }
+
+
+ private boolean add(Object object){
+ addAfter(object);
+ size++;
+ return true;
+ }
+
+
+ private boolean add(int index,Object object) throws Exception{
+ index(index - 1);
+ current.nextNode = new Node(object,current.nextNode.nextNode);
+ size++;
+ return true;
+ }
+
+
+ private boolean addFirst(Object object){
+ Node node = new Node(object,null);
+ current = head.nextNode;
+ head.nextNode = node;
+ node.nextNode = current;
+ size++;
+ return true;
+ }
+
+
+ private boolean addLast(Object object){
+ add(object);
+ return true;
+ }
+
+
+ private Object get(int index) throws Exception{
+ index(index);
+ return current.object;
+ }
+
+
+ private Object remove(int index) throws Exception{
+
+ if (index == size - 1){
+ Object object = removeLast();
+ return object;
+ }
+ index(index - 1);
+ Object object = current.nextNode.object;
+
+ current.nextNode = current.nextNode.nextNode;
+ size--;
+ return object;
+ }
+
+ private Object removeFirst(){
+ Object object = null;
+ if (size > 0){
+ current = head.nextNode;
+ object = current.object;
+ head.nextNode = head.nextNode.nextNode;
+ size--;
+ }
+ return object;
+ }
+
+ private Object removeLast() throws Exception{
+ Object object = null;
+ if (size > 0){
+ int j = 0;
+ current = head.nextNode;
+
+ while (current != null){
+ current = current.nextNode;
+ j++;
+ }
+ index(j - 1);
+ object = current.nextNode.object;
+ current.nextNode = null;
+ size--;
+ }
+ return object;
+ }
+ private void index (int index) throws Exception{
+
+ if (index < -1 || index > size){
+
+ throw new Exception(" ");
+ }
+
+ if (index == -1){
+ return;
+ }
+ current = head.nextNode;
+ int j = 0;
+ while (current != null && j < index){
+ current = current.nextNode;
+ j++;
+ }
+ }
+
+
+ private void addAfter(Object object){
+
+ if (head.nextNode == null){
+
+ Node newNode = new Node(object,null);
+ }else{
+ current = head.nextNode;
+ while (current.nextNode == null){
+ current = current.nextNode;
+ }
+ current.setNode(new Node(object,null));
+ }
+
+
+ }
+
+
+
+
+ private static class Node{
+
+ Object object;
+
+ Node nextNode;
+
+
+ Node (Node nextNode){
+ this.nextNode = nextNode;
+ }
+
+
+ Node (Object object, Node nextNode){
+ this.nextNode = nextNode;
+ this.object = object;
+ }
+
+ private void setNode(Node node){
+ this.nextNode = node;
+ }
+
+ }
+
+
+}
diff --git a/group16/1154151360/src/com/list/Queue.java b/group16/1154151360/src/com/list/Queue.java
new file mode 100644
index 0000000000..faa3e87381
--- /dev/null
+++ b/group16/1154151360/src/com/list/Queue.java
@@ -0,0 +1,51 @@
+package com.list;
+//队列
+public class Queue {
+
+ Object [] element;
+
+ private static int DEFAULT_SIZE = 10;
+
+ int front;//头指针
+
+ int rear;//尾指针
+
+ public Queue(){
+ this(DEFAULT_SIZE);
+ }
+ public Queue(int size){
+ element = new Object[size];
+ this.front = 0;
+ this.rear = 0;
+ }
+
+ public boolean enQueue(Object object){
+
+ if ((rear + 1) % element.length == front){
+ return false;
+ }else{
+ element[rear] = object;
+ rear = (rear + 1) % element.length;
+ return true;
+ }
+ }
+
+ public Object deQueue(){
+ if (front == rear){
+ return null;
+ }else{
+ Object object = element[front];
+ front = (front + 1) % element.length;
+ return object;
+ }
+
+ }
+
+ public int size(){
+ return (rear -front) & (element.length - 1);
+ }
+
+ public boolean isEmpty(){
+ return rear == front;
+ }
+}
diff --git a/group16/1154151360/src/com/list/Stack.java b/group16/1154151360/src/com/list/Stack.java
new file mode 100644
index 0000000000..f92a9e731c
--- /dev/null
+++ b/group16/1154151360/src/com/list/Stack.java
@@ -0,0 +1,35 @@
+package com.list;
+
+import java.util.ArrayList;
+import java.util.EmptyStackException;
+
+public class Stack {
+
+ ArrayList