Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions group09/85839593/assignment-0215-0226/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>assignment</artifactId>
<groupId>assignment</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>assignment-0215-0226</artifactId>


</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

/**
* Created with IntelliJ IDEA.
* User: guohairui
* Date: 17-2-22
* Time: 上午12:06
* To change this template use File | Settings | File Templates.
*/
public class MyArrayList {
public int size = 0;
private Object [] elementData = new Object[5];
public void add(int index,Object obj){
if(index>size() ||index<0)
throw new IndexOutOfBoundsException("哎呀我去,不够了.");
elementData[index]=obj;
size++;
}
public void insert(int index,Object obj){
if(size>elementData.length-1){
System.out.println("当前size:" + size + " 当前length:" + elementData.length+",再插不够了,需要扩容");
Object [] tmpData = elementData;
elementData =new Object[size+5] ;
System.out.println("当前size:" + size + " 当前length扩了5后为:" + elementData.length);
System.arraycopy(tmpData,0,elementData,0,index);
elementData[index]=obj;
System.arraycopy(tmpData,index,elementData,index+1,tmpData.length-index);
}else {
if(elementData[index]==null){
elementData[index]=obj;
}else {
System.out.println("当前size:" + size + " 当前length:" + elementData.length);
System.arraycopy(elementData,index,elementData,index+1,size-index);
elementData[index]=obj;
}
}
size++;
}
public void add(Object obj){
if(size>=elementData.length){
System.out.println("当前size:" + size + " 当前length:" + elementData.length);
Object [] tmpData = elementData;
elementData =new Object[size+5] ;
System.out.println("当前size:" + size + " 当前length扩了5后为:" + elementData.length);
System.arraycopy(tmpData,0,elementData,0,size);
elementData[size]=obj;
}else {
System.out.println("当前size:" + size + " 当前length:" + elementData.length);
elementData[size]=obj;
}
size++;
}
public Object get(int index) {
if(index>=size)
throw new IndexOutOfBoundsException("越了");
return elementData[index];
}
public Object remove(int index){
Object delValue = elementData[index];
int movesize = size-index-1;
System.out.print("size:"+size+" index:"+index+" ,size-index-1:"+movesize);
System.arraycopy(elementData,index+1,elementData,index,movesize);
System.out.print("删除后前移位,数组末位清空");
elementData[--size]=null;

return delValue;
}
public int size(){
return size;
}
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append('[');
for (int i=0;i<size;i++) {
Object o = elementData[i];
sb.append(elementData[i]);
if(i<size-1)
sb.append(",");
}
return sb.append(']').toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
/**
* Created with IntelliJ IDEA.
* User: guohairui
* Date: 17-2-26
* Time: 下午3:21
* To change this template use File | Settings | File Templates.
*/
public class MyLinkedList {
private Node head=new Node(null,null,null);
public int size = 0;

public MyLinkedList(){
head.next=head.previous=head;
}
public void add(Object o){
if(null==head){
head = new Node(null,null,null);
}
Node newNode = new Node(o,head,head.previous); //放在最后
newNode.previous.next=newNode;
newNode.next.previous=newNode;
size++;
}
public void add(int index,Object o ) {
Node newNode = new Node(o,getNode(index),getNode(index).previous); //放在最后
newNode.previous.next=newNode;
newNode.next.previous=newNode;
size++;
}
public Object get(int index){
return getNode(index).data;
}
public Object remove(int index){
remove(getNode(index));
return null;
}
public void addFirst(Object o){

}
public void removeFirst(){
remove(head.next);
}
public void removeLast(){
remove(head.previous);
}
public void remove(Node node){
node.previous.next=node.next;
node.next.previous=node.previous;
size--;
}


public int size(){
return size();
}
public Object[] toArray(){
return null;
}


public Node getNode(int index){
if(index<0||index>=size)
throw new RuntimeException("超出范围了");
Node node = head;
if(index<(size>>1)){//当偏向于前一半时从头找,否则从尾找
for ( int i=0;i<=index;i++) {
node = node.next;
}
}else {
for (int i=size;i>index;i--){
node=node.previous;
}
}
return node;
}

private static class Node{
Object data;//当前Entry
Node next;//下一个
Node previous;//前一个
public Node(Object data,Node next,Node previous){
this.data=data;
this.next=next;
this.previous=previous;
}
}
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append('[');
Node n =getNode(0) ;
for (int i=0;i<size;i++) {
sb.append(n.data);
if(i<size-1)
sb.append(",");
n=n.next;
}
return sb.append(']').toString();
}
}
21 changes: 21 additions & 0 deletions group09/85839593/assignment-0215-0226/src/main/java/MyQueue.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* 先进先出
*/
public class MyQueue {
private MyLinkedList myLinkedList = new MyLinkedList();
public void enQueue(Object o){
myLinkedList.add(o);
}
public void deQueue(){
myLinkedList.remove(0) ;
}
public boolean isEmpty(){
return myLinkedList.size<1;
}
public int size(){
return myLinkedList.size;
}
public String toString(){
return myLinkedList.toString();
}
}
30 changes: 30 additions & 0 deletions group09/85839593/assignment-0215-0226/src/main/java/MyStack.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* 先进后出
*/
public class MyStack {
private MyArrayList myArrayList = new MyArrayList();
public MyStack(){}
public void push(Object o) {
myArrayList.add(o);
}
public Object pop(){
Object popo=myArrayList.get(myArrayList.size-1);
myArrayList.remove(myArrayList.size-1);
return popo;
}
public Object peek(){

return myArrayList.get(myArrayList.size-1);

}
public boolean isEmpty(){

return myArrayList.size<1;
}
public int size(){
return myArrayList.size;
}
public String toString(){
return myArrayList.toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import org.junit.*;
import org.junit.Test;

/**
* Created with IntelliJ IDEA.
* User: guohairui
* Date: 17-2-22
* Time: 上午12:24
* To change this template use File | Settings | File Templates.
*/
public class MyArrayListTest {

@Test
public void testAdd() throws Exception {
MyArrayList arrayList = new MyArrayList();
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
arrayList.add("4");
arrayList.add("5");
arrayList.add("6");
arrayList.add(7);
arrayList.add(8);
arrayList.add(9);
arrayList.add(10);
arrayList.add(true);
System.out.println(String.valueOf(arrayList.get(2)));
System.out.println(arrayList.toString());
arrayList.remove(2);
System.out.println(arrayList.toString());

}

@Test
public void testGet() throws Exception {
MyArrayList arrayList = new MyArrayList();
//arrayList.add(6,"1");
arrayList.add(5,"2");
arrayList.add(4,"3");
arrayList.add(3,"4");
arrayList.add(2,"5");
arrayList.add(1,"6");
//arrayList.add(0,"7");
System.out.println(arrayList.toString());
System.out.println(arrayList.get(4));
arrayList.remove(2);
System.out.println(arrayList.toString());

}
@Test
public void testInsert() throws Exception {
MyArrayList arrayList = new MyArrayList();
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
arrayList.add("4");
arrayList.add("5");
arrayList.add("6");
System.out.println(arrayList.toString());
System.out.println(arrayList.get(4));
arrayList.insert(4,"ghr");
System.out.println(arrayList.get(4));
System.out.println(arrayList.toString());
}

@Test
public void testRemove() {
throw new RuntimeException();
}

@Test
public void testSize() throws Exception {
System.out.println(16>>2);
}
}
Loading