From 2de36679f4794880c8fceb4feeff55ffdc2aafb5 Mon Sep 17 00:00:00 2001
From: yanshanliang <573535234@qq.com>
Date: Sun, 12 Mar 2017 22:24:51 +0800
Subject: [PATCH] arraylist
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
鏆備笖瀹炵幇ArrayList
---
.../573535234/RemoteSystemsTempFiles/.project | 12 ++
group22/573535234/githubTutorial/.classpath | 6 +
group22/573535234/githubTutorial/.gitignore | 1 +
group22/573535234/githubTutorial/.project | 17 ++
.../.settings/org.eclipse.jdt.core.prefs | 11 ++
.../com/lys/coding/week2/basic/ArrayList.java | 76 ++++++++
.../lys/coding/week2/basic/LinkedList.java | 164 ++++++++++++++++++
.../src/com/lys/coding/week2/basic/List.java | 9 +
8 files changed, 296 insertions(+)
create mode 100644 group22/573535234/RemoteSystemsTempFiles/.project
create mode 100644 group22/573535234/githubTutorial/.classpath
create mode 100644 group22/573535234/githubTutorial/.gitignore
create mode 100644 group22/573535234/githubTutorial/.project
create mode 100644 group22/573535234/githubTutorial/.settings/org.eclipse.jdt.core.prefs
create mode 100644 group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/ArrayList.java
create mode 100644 group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/LinkedList.java
create mode 100644 group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/List.java
diff --git a/group22/573535234/RemoteSystemsTempFiles/.project b/group22/573535234/RemoteSystemsTempFiles/.project
new file mode 100644
index 0000000000..5447a64fa9
--- /dev/null
+++ b/group22/573535234/RemoteSystemsTempFiles/.project
@@ -0,0 +1,12 @@
+
+
+ RemoteSystemsTempFiles
+
+
+
+
+
+
+ org.eclipse.rse.ui.remoteSystemsTempNature
+
+
diff --git a/group22/573535234/githubTutorial/.classpath b/group22/573535234/githubTutorial/.classpath
new file mode 100644
index 0000000000..fb565a588d
--- /dev/null
+++ b/group22/573535234/githubTutorial/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/group22/573535234/githubTutorial/.gitignore b/group22/573535234/githubTutorial/.gitignore
new file mode 100644
index 0000000000..ae3c172604
--- /dev/null
+++ b/group22/573535234/githubTutorial/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/group22/573535234/githubTutorial/.project b/group22/573535234/githubTutorial/.project
new file mode 100644
index 0000000000..ad0a1d9490
--- /dev/null
+++ b/group22/573535234/githubTutorial/.project
@@ -0,0 +1,17 @@
+
+
+ githubTutorial
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/group22/573535234/githubTutorial/.settings/org.eclipse.jdt.core.prefs b/group22/573535234/githubTutorial/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..7341ab1683
--- /dev/null
+++ b/group22/573535234/githubTutorial/.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.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+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.7
diff --git a/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/ArrayList.java b/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/ArrayList.java
new file mode 100644
index 0000000000..feeaaa2d94
--- /dev/null
+++ b/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/ArrayList.java
@@ -0,0 +1,76 @@
+package com.lys.coding.week2.basic;
+
+import java.util.Arrays;
+
+public class ArrayList implements List{
+
+ private int size = 0;
+
+ private Object[] elementData = new Object[100];
+
+ @Override
+ public void add(Object o) {
+ //先检查数组容量是否充足,不足则要扩增
+ if(size>=elementData.length){
+ int newLength = elementData.length*3/2+1;
+ Arrays.copyOf(elementData, newLength);
+ }
+ //往数组里面增添数据
+ elementData[size+1]=o;
+ //数组容量size加一
+ size++;
+ }
+
+ @Override
+ public void add(int index, Object o) {
+ //先检查数组容量是否充足,不足则要扩增
+ if(size>=elementData.length){
+ int newLength = elementData.length*3/2+1;
+ Arrays.copyOf(elementData, newLength);
+ }
+ if(index!=size-1){
+ //把当前数组index后面的数据往后挪
+ System.arraycopy(elementData, index, elementData, index+1, size-index);
+ }
+ //往index位置放
+ elementData[index]=o;
+ //数组容量size加一
+ size++;
+ }
+
+ @Override
+ public Object get(int index) {
+ //检查index是否非法
+ if(index>=size){
+ throw new IndexOutOfBoundsException("Index: "+index+",Size:"+size);
+ }else if(index<0){
+ throw new IllegalArgumentException("Index: "+index+",<0!");
+ }
+ return elementData[index];
+ }
+
+ @Override
+ public Object remove(int index) {
+ Object o = elementData[index];
+ //检查index是否非法
+ if(index>=size){
+ throw new IndexOutOfBoundsException("Index: "+index+",Size:"+size);
+ }else if(index<0){
+ throw new IllegalArgumentException("Index: "+index+",<0!");
+ }
+ if(size!=index+1){
+ //把当前index后面的数据往前挪
+ System.arraycopy(elementData, index+1, elementData, index, size-index-1);
+ }
+ elementData[size]=null;
+ //数组容量size减一
+ size--;
+ return o;
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+
+}
diff --git a/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/LinkedList.java b/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/LinkedList.java
new file mode 100644
index 0000000000..f46f218e60
--- /dev/null
+++ b/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/LinkedList.java
@@ -0,0 +1,164 @@
+package com.lys.coding.week2.basic;
+
+import java.util.Iterator;
+
+public class LinkedList implements List{
+
+ private Node head;
+
+ public void add(Object o){
+ if(head==null){
+ head = new Node();
+ head.data = o;
+ }else{
+ Node nodes = head;
+ while(nodes.next!=null){
+ nodes = nodes.next;
+ }
+ nodes.next = new Node();
+ nodes.next.data = o;
+ }
+ }
+ public void add(int index , Object o){
+ int len = size();
+ if(len7->10 , 逆置后变为 10->7->3
+ */
+ public void reverse(){
+
+ }
+
+ /**
+ * 删除一个单链表的前半部分
+ * 例如:list = 2->5->7->8 , 删除以后的值为 7->8
+ * 如果list = 2->5->7->8->10 ,删除以后的值为7,8,10
+ */
+ public void removeFirstHalf(){
+
+ }
+
+ /**
+ * 从第i个元素开始, 删除length 个元素 , 注意i从0开始
+ * @param i
+ * @param length
+ */
+ public void remove(int i, int length){
+
+ }
+ /**
+ * 假定当前链表和listB均包含已升序排列的整数
+ * 从当前链表中取出那些listB所指定的元素
+ * 例如当前链表 = 11->101->201->301->401->501->601->701
+ * listB = 1->3->4->6
+ * 返回的结果应该是[101,301,401,601]
+ * @param list
+ */
+ public int[] getElements(LinkedList list){
+ return null;
+ }
+
+ /**
+ * 已知链表中的元素以值递增有序排列,并以单链表作存储结构。
+ * 从当前链表中中删除在listB中出现的元素
+ * @param list
+ */
+
+ public void subtract(LinkedList list){
+
+ }
+
+ /**
+ * 已知当前链表中的元素以值递增有序排列,并以单链表作存储结构。
+ * 删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同)
+ */
+ public void removeDuplicateValues(){
+
+ }
+
+ /**
+ * 已知链表中的元素以值递增有序排列,并以单链表作存储结构。
+ * 试写一高效的算法,删除表中所有值大于min且小于max的元素(若表中存在这样的元素)
+ * @param min
+ * @param max
+ */
+ public void removeRange(int min, int max){
+
+ }
+
+ /**
+ * 假设当前链表和参数list指定的链表均以元素依值递增有序排列(同一表中的元素值各不相同)
+ * 现要求生成新链表C,其元素为当前链表和list中元素的交集,且表C中的元素有依值递增有序排列
+ * @param list
+ */
+ public LinkedList intersection( LinkedList list){
+ return null;
+ }
+}
diff --git a/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/List.java b/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/List.java
new file mode 100644
index 0000000000..a92e7cabf5
--- /dev/null
+++ b/group22/573535234/githubTutorial/src/com/lys/coding/week2/basic/List.java
@@ -0,0 +1,9 @@
+package com.lys.coding.week2.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();
+}