```// 順序表的元素類型 int
public class MyArrayList {
// 屬性是什么
private int[] array; // 代表的是存在數(shù)據(jù)的數(shù)組
// array.length 代表的是數(shù)組的容量
private int size; // 記錄順序表的已有數(shù)據(jù)個數(shù)
我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、拜城ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的拜城網(wǎng)站制作公司
// 構(gòu)造方法
public MyArrayList() {
// 1. 申請空間
array = new int[2];
// 2. 初始化數(shù)據(jù)個數(shù)
size = 0;
}
// 增(重點(diǎn))
// 平均 O(1)
public void pushBack(int element) {
ensureCapacity();
array[size++] = element;
}
public void pushFront(int element) {
ensureCapacity();
for (int i = size; i >= 1; i--) {
array[i] = array[i - 1];
}
array[0] = element;
size++;
}
public void insert(int index, int element) {
if (index < 0 || index > size) {
System.err.println("下標(biāo)錯誤");
return;
}
ensureCapacity();
for (int i = size - 1; i >= index; i--) {
array[i + 1] = array[i];
}
array[index] = element;
size++;
}
// 刪(重點(diǎn))
public void popBack() {
if (size <= 0) {
System.err.println("順序表為空");
return;
}
array[--size] = 0;
}
public void popFront() {
if (size <= 0) {
System.err.println("順序表為空");
return;
}
for (int i = 0; i < size - 1; i++) {
array[i] = array[i + 1];
}
array[--size] = 0;
}
public void earse(int index) {
if (size <= 0) {
System.err.println("順序表為空");
return;
}
if (index < 0 || index >= size) {
System.err.println("下標(biāo)錯誤");
return;
}
for (int i = index + 1; i < size; i++) {
array[i - 1] = array[i];
}
array[--size] = 0;
}
// 查
// 改
// 打印
public void print() {
System.out.println("打印順序表: 當(dāng)前容量: " + array.length);
for (int i = 0; i < size; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
// 保證容量夠用,否則進(jìn)行擴(kuò)容
private void ensureCapacity() {
if (size < array.length) {
return;
}
int newCapacity = array.length * 2;
int[] newArray = new int[newCapacity];
for (int i = 0; i < size; i++) {
newArray[i] = array[i];
}
array = newArray;
}
// 返回 element 在順序表中的下標(biāo),如果出現(xiàn)多次,返回第一次出現(xiàn)的下標(biāo)
public int indexOf(int element) {
for (int i = 0; i < size; i++) {
if (array[i] == element) {
return i;
}
}
return -1;
}
public int get(int index) {
if (index < 0 || index >= size) {
System.err.println("下標(biāo)錯誤");
return -1;
}
return array[index];
}
public void set(int index, int element) {
if (index < 0 || index >= size) {
System.err.println("下標(biāo)錯誤");
return;
}
array[index] = element;
}
// 刪除掉某一個元素,如果出現(xiàn)多次,刪除第一次出現(xiàn)的
public void remove(int element) {
int index = indexOf(element);
if (index != -1) {
earse(index);
}
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
public void removeAll(int element) {//刪除這個元素所有次出現(xiàn)
/* 時間:O(n^2) 時間:O(1)
int index;
while ((index = indexOf(element)) != -1) {
earse(index);
}
*/
/* 時間: O(n) 空間: O(n)
int[] newArray = new int[array.length];
int j = 0;
for (int i = 0; i < size; i++) {
if (array[i] != element) {
newArray[j++] = array[i];
}
}
array = newArray;
size = j;
*/
// 時間:O(n) 空間:O(1)
int j = 0;
for (int i = 0; i < size; i++) {
if (array[i] != element) {//遍歷整個數(shù)組,把不是該元素的從數(shù)組頭開始放,
array[j++] = array[i];
}
}
size = j;//j是不同于element的個數(shù),傳給size,這是整個數(shù)組里前size都是不同的
}
public static void main(String[] args) {
MyArrayList list = new MyArrayList();
list.print();
list.pushBack(1);
list.pushBack(2);
list.pushBack(3);
list.print(); // 1 2 3
list.pushFront(10);
list.pushFront(20);
list.pushFront(30);
list.print(); // 30 20 10 1 2 3
list.insert(3, 100);
list.print(); // 30 20 10 100 1 2 3
list.insert(20, 200); // 報(bào)錯
list.earse(2);
list.earse(2);
list.print(); // 30 20 1 2 3
list.popFront();
list.popFront();
list.popFront();
list.print(); // 2 3
list.popBack();
list.popBack();
list.print(); // 空的
list.popBack(); // 報(bào)錯
}
}
網(wǎng)站題目:關(guān)于順序表的基本操作。代碼+注釋
文章源于:http://bm7419.com/article42/gijjhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)