java完成次序構造線性列表的函數代碼。本站提示廣大學習愛好者:(java完成次序構造線性列表的函數代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是java完成次序構造線性列表的函數代碼正文
空話不多說,直接上代碼
package com.ncu.list;
/**
*
* 次序構造線性列表
*
*
*/
public class SquenceList<T> {
private int size; // 線性表的長度
private Object[] listArray;
private int currenSize = 0; // 以後線性表中的數據
public SquenceList() {
}
public SquenceList(int size) {
this.size = size;
listArray = new Object[size];
}
public void arrayCopy(int index) {
Object newArray[] = new Object[size];
for (int i = 0; i < currenSize; i++) {
if (i >= index) {
newArray[i] = listArray[i + 1];
} else {
newArray[i] = listArray[i];
}
}
listArray = newArray;
newArray = null; // 釋放資本
}
/**
* 依據索引地位移除元素
*
* @param index
*/
public void remove(int index) {
index = index - 1;
if (index < 0 || index > currenSize) {
System.out.println("線性表索引越界");
}
if (currenSize == 0) {
System.out.println("線性表為空");
} else {
currenSize--;
arrayCopy(index);
if (currenSize == 0) {
listArray = null;
}
}
}
/**
* 依據元素內容移除元素
*
* @param element
*/
public void removeLocate(T element) {
for (int i = 0; i < currenSize;) {
if (element.equals(listArray[i])) {
remove(i + 1);
} else {
i++;
}
}
}
/**
* 從線性表尾段拔出數據
*
* @param element
*/
public void add(T element) {
if (currenSize > size || currenSize < 0) {
System.out.println("線性表索引越界");
} else {
listArray[currenSize] = element;
currenSize++;
}
}
private void insert(T element, int index) {
index = index - 1;
if (currenSize > size || currenSize < 0 || index < 0
|| index >= currenSize) {
System.out.println("線性表索引越界");
} else {
Object newArray[] = new Object[size];
for (int i = 0; i < currenSize; i++) {
if (i >= index) {
newArray[index] = element;
newArray[i + 1] = listArray[i];
} else {
newArray[i] = listArray[i];
}
}
listArray = newArray;
newArray = null;
currenSize++;
}
}
/**
* 在指定索引地位拔出數據
*
* @param element
* @param index
*/
public void add(T element, int index) {
if (index == size) {
add(element);
} else {
insert(element, index);
}
}
/**
* 刪除線性表最初一個元素
*/
public void delete() {
if (isEmpty()) {
System.out.println("線性表為空,不克不及刪除");
} else {
listArray[currenSize - 1] = null;
currenSize--;
}
}
/**
* 判讀線性表能否為空
*
* @return
*/
public boolean isEmpty() {
if (currenSize == 0) {
return true;
} else {
return false;
}
}
/**
* 依據索引找到響應的元素
*
* @param index
* @return
*/
public T get(int index) {
T obj = null;
if (isEmpty() || index > currenSize || index < 0) {
System.out.println("線性表為空,不克不及刪除");
} else {
obj = (T) listArray[index - 1];
}
return obj;
}
/**
* 清空線性表
*/
public void clear() {
size = 0;
currenSize = 0;
}
/**
* 獲得線性表以後的元素的個數
*
* @return
*/
public int size() {
return currenSize;
}
public void showList() {
if (currenSize > 0) {
for (int i = 0; i < currenSize; i++) {
System.out.println(listArray[i]);
}
} else {
System.out.println("線性表為空");
}
System.out.println("------------");
}
public static void main(String[] args) {
SquenceList<Integer> list = new SquenceList<Integer>(10);
}
}