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...