您的位置:首页 > 编程语言 > Java开发

链表-顺序存储-Java实现

2012-02-16 17:00 381 查看
package com.wrh.lab.dataStructure.linearList;
/**
*
* @author wrh
* the interface of linear list.
*
*/
public interface LinearList<E> {

/**
* identify whether the list is empty or not
* @return true for empty and false for not empty
*/
public boolean isEmpty();

/**
* get the length of the list
* @return the length of the list
*/
public int getLength();

/**
* return the element in  index
* @param index
* @return the element in index
*/
public E get(int index);

/**
*
* @param index
* @param element
* @return the former element
*/
public E set(int index, E element);

/**
* add element after the index
* @param index
* @param element
* @return true for add element success and false for add fail
*/
public boolean add(int index, E element);

/**
* add the element at the end of the list
* @param element
* @return true for success and false for fail
*/
public boolean addLast(E element);

/**
* remove the element at index and return this element
* @param index
* @return
*/
public E remove(int index);

/**
* show the elements in the list
* @return
*/
public void display();

/**
* clear the list
*/
public void clear();
}


package com.wrh.lab.dataStructure.linearList.impl;

import com.wrh.lab.dataStructure.linearList.LinearList;

public class LinearListImpl<E> implements LinearList<E> {

private E[] entry;     //store the element
private int length;    //the length of the linear list
private static final int MAX_SIZE = 50;

// constructor
public LinearListImpl(){}

//constructor
public LinearListImpl(E[] entry){
this.entry = entry;
this.length = entry.length;
}

@Override
public boolean isEmpty() {
boolean isEmpty = false;
if (length == 0){
isEmpty = true;
} else {
isEmpty = false;
}
return isEmpty;
}

@Override
public int getLength() {
return this.length;
}

@Override
public E get(int index) {
if (length > index) {
return entry[index];
} else {
return null;
}
}

@Override
public E set(int index, E element) {
if (length > index) {
E e = entry[index];
entry[index] = element;
return e;
} else {
return null;
}
}

@Override
public boolean add(int index, E element) {
boolean isSuc = false;
if (length > index && length < MAX_SIZE) {
resizeList(entry);
int newPos = index + 1;
for (int i = length; i > newPos; i--) {
entry[i] = entry[i - 1];
}
entry[newPos] = element;
length +=1;
isSuc = true;
} else {
isSuc = false;
}
return isSuc;
}

@Override
public boolean addLast(E element) {
boolean isSuc = false;
if (length < MAX_SIZE) {
resizeList(entry);
entry[length] = element;
length += 1;
isSuc = true;
} else {
isSuc = false;
}
return isSuc;
}

@Override
public E remove(int index) {
if (length > 0) {
E e = entry[index];
for (int i = index; i < length -1; i ++) {
entry[i] = entry[i + 1];
}
length -= 1;
return e;
} else {
return null;
}
}

@Override
public void clear() {
entry = null;
length = 0;
}

@Override
public void display() {
if (length > 0 && length < MAX_SIZE) {
for(int i = 0; i < length; i++) {
System.out.print(entry[i] + " ");
}
} else {
System.out.println("null");
}

}

/**
* resize the list
* @param entry
*/
public void resizeList(E[] entry) {
int resize = length + 1;
Object[] seqList_upp = new Object[resize];
System.arraycopy(entry,0,seqList_upp,0,length);
this.entry = (E[]) seqList_upp;
}

//test the list
public static void main(String[] args) {
Integer[] a = {0,1,2,3,4,5,6,7,8,9};
LinearList<Integer> l = new LinearListImpl<Integer>(a);
System.out.println(l.getLength());
System.out.println(l.get(8));
l.display();
System.out.println();
l.add(3, 12);
System.out.println(l.getLength());
l.remove(2);
System.out.println(l.getLength());
l.display();
l.clear();
System.out.println();
l.display();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: