順序表的插入和刪除(資料結構)

2021-09-25 12:18:24 字數 2453 閱讀 9800

1.問題描述

順序表的插入和刪除是資料結構中比較基礎的,在插入部分要能夠做到在陣列頭部插入資料,在尾部插入資料,以及在指定位置插入指定資料。在刪除部分要能夠做到刪除尾部資料,刪除頭部資料,刪除指定位置的資料。

2.問題分析

在物件中設定乙個屬性size來表示陣列中資料的長度,同時自然也少不了乙個屬性是陣列。一般來將,給陣列尾部插入乙個資料或者刪除陣列尾部的資料比較簡單。

1)首先來看頭插法

可以看到,這些從後向前依次向後移動,有圓圈的範圍為【size-1,0】

沒有圓圈的範圍是【size,1】

**展示為

public void pushfront(int e)

array[0]=e;

size++;

}

2)再來看給固定位置插入指定的數

從圖中可以看出,這些數從index處開始前向後依次往後移,有圓圈的範圍是【index,size-1】,沒圓圈的範圍為【index+1,size】。

**展示為

public void insert(int index,int e)

array[index]=e;

size++;

}

3)刪除頭部的數

這些數從前往後依次向前移,有圓圈的範圍為【1,size-1】,沒有圓圈的範圍為【0,size-2】

public void popfront()

for(int i=0;i<=size-2;i++)

array[--size]=0;

}

4)刪除指定位置的數

這些數從index位置開始從前向後依次向前移動,有圓圈的範圍是【index+1,size-1】,沒有圓圈的範圍是【index,size-2】

public void delete(int index)

for(int i=index;i<=size-2;i++)

array[--size]=0;

}

注意: 這裡還有乙個問題就是當陣列長度不夠存放插進來的資料時,要對陣列進行擴容,進行擴容時,一般為原來陣列的1.5/2倍,要根據實際情況來判斷,進行擴容**如下:

public void ensurecapacity() 

int newcapacity = array.length * 2;

int newarray = new int[newcapacity];

for (int i = 0; i < size; i++)

array = newarray;//如果資料長度大於或者等於陣列長度時,需要建立乙個新物件。

}

接下來就是**:

class myarraylist

public void ensurecapacity()

array = newarray;

}else

return;

} public void pushback(int e)

public void pushfront(int e)

array[0]=e;

size++;

} public void insert(int index,int e)

array[index]=e;

size++;

} public void popback()

array[size-1]=0;

size=size-1;

} public void popfront()

for(int i=0;i<=size-2;i++)

array[size-1]=0;

size=size-1;

} public void delete(int index)

for(int i=index;i<=size-2;i++)

array[size-1]=0;

size=size-1;

} public void to ()

{ for(int i=0;i**截圖如下:

資料結構順序表的插入與刪除

如果要再第三元素的地方插入的話要把第三個元素整體往後移,把新元素插入第三個位置 整個長度為5 由於要再第三個位置插入資料元素三,所以j 5for迴圈所負責的是把三號位置的資料元素整體往後移一位 把資料元素放在第三個位置實質是放在陣列下標為2的位置上 再進行相關操作中一定要進行合法性判斷避免插入位置前...

jmu ds 順序表區間元素刪除 資料結構

若乙個線性表l採用順序儲存結構儲存,其中所有的元素為整數。設計乙個演算法,刪除元素值在 x,y 之間的所有元素,要求演算法的時間複雜度為o n 空間複雜度為o 1 三行資料,第一行是順序表的元素個數,第二行是順序表的元素,第三行是x和y。刪除元素值在 x,y 之間的所有元素後的順序表。1051 91...

資料結構 順序表的插入

資料結構第一篇 順序表 剛開始複習資料結構,感覺還是蠻吃力的,基礎不是很好有太多不明白的點了,還好有個耐心極棒的藍朋友 獻花 雖然現在還不是很明白,但是我相信繼續學習下去一定會撥開烏雲的。知識點 malloc函式原型 extern void malloc unsigned int num bytes...