順序表的基本操作及C語(yǔ)言實(shí)現(xiàn)(詳解版)
我們學(xué)習(xí)了順序表及初始化的過(guò)程,本節(jié)學(xué)習(xí)有關(guān)順序表的一些基本操作,以及如何使用 C 語(yǔ)言實(shí)現(xiàn)它們。
順序表插入元素
向已有順序表中插入數(shù)據(jù)元素,根據(jù)插入位置的不同,可分為以下 3 種情況:
插入到順序表的表頭;
在表的中間位置插入元素;
尾隨順序表中已有元素,作為順序表中的最后一個(gè)元素;
雖然數(shù)據(jù)元素插入順序表中的位置有所不同,但是都使用的是同一種方式去解決,即:通過(guò)遍歷,找到數(shù)據(jù)元素要插入的位置,然后做如下兩步工作:
將要插入位置元素以及后續(xù)的元素整體向后移動(dòng)一個(gè)位置;
將元素放到騰出來(lái)的位置上;
例如,在?{1,2,3,4,5}
?的第 3 個(gè)位置上插入元素 6,實(shí)現(xiàn)過(guò)程如下:
遍歷至順序表存儲(chǔ)第 3 個(gè)數(shù)據(jù)元素的位置,如圖?1 所示:

將元素 3、4 和 5 整體向后移動(dòng)一個(gè)位置,如圖 2 所示:

將新元素 6 放入騰出的位置,如圖 3 所示:

因此,順序表插入數(shù)據(jù)元素的 C 語(yǔ)言實(shí)現(xiàn)代碼如下:
注意,動(dòng)態(tài)數(shù)組額外申請(qǐng)更多物理空間使用的是 realloc 函數(shù)。此外在實(shí)現(xiàn)元素整體后移的過(guò)程中,目標(biāo)位置其實(shí)是有數(shù)據(jù)的,還是 3,只是下一步新插入元素時(shí)會(huì)把舊元素直接覆蓋。
順序表刪除元素
從順序表中刪除指定元素,實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,只需找到目標(biāo)元素,并將其后續(xù)所有元素整體前移 1 個(gè)位置即可。
后續(xù)元素整體前移一個(gè)位置,會(huì)直接將目標(biāo)元素刪除,可間接實(shí)現(xiàn)刪除元素的目的。
例如,從?{1,2,3,4,5}
?中刪除元素 3 的過(guò)程如圖 4 所示:

因此,順序表刪除元素的 C 語(yǔ)言實(shí)現(xiàn)代碼為:
順序表查找元素
順序表中查找目標(biāo)元素,可以使用多種查找算法實(shí)現(xiàn),比如說(shuō)二分查找算法、插值查找算法等。
這里,我們選擇順序查找算法,具體實(shí)現(xiàn)代碼為:
順序表更改元素
順序表更改元素的實(shí)現(xiàn)過(guò)程是:
找到目標(biāo)元素;
直接修改該元素的值;
順序表更改元素的 C 語(yǔ)言實(shí)現(xiàn)代碼為:
實(shí)例演示
以上是順序表使用過(guò)程中最常用的基本操作,這里給出完整的實(shí)現(xiàn)代碼:
程序運(yùn)行結(jié)果為:
原順序表:
1 2 3 4 5
刪除元素1:
2 3 4 5
在第2的位置插入元素5:
2 5 3 4 5
查找元素3的位置:
3
將元素3改為6:
2 5 6 4 5