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(); +}