題目
刪除線性表中所有值為x
xx的元素。
方法一用k
kk記錄順序表中不等於x
xx的元素的個數,掃瞄順序表l
ll,若當前元素不等於x
xx,則將當前元素移動到k
kk位置,若當前元素等於x
xx,不做任何處理。
void
del_x_1
(sqlist &l, elemtype x)
} l.length = k;
}
方法二
用k
kk記錄順序表中等於x
xx的元素的個數,順序掃瞄l
ll,若當前元素等於x
xx,則k+1
k+1k+
1,若當前元素不等於k
kk,則將當前元素前移k
kk位。
void
del_x_2
(sqlist &l, elemtype x)
l.length = l.length - k;
}
方法三
設定頭尾兩個指標(i = 1, j = n)
,從兩端向中間移動,反遇到最左端值x
的元素時,直接將最右端非x
的元素移至這個位置,當右端指標遇到值x
的元素時,直接忽略這個元素,指標繼續前移,最後當兩指標相遇時迴圈結束,指標以後的部分都被刪除,指標的值即為順序表長度。這個方法的缺點就是會改變表中元素的相對位置。
void
del_x_3
(sqlist &l, elemtype x)
if(l.data[head-1]
== x)
head++;}
l.length = head;
}
總結
方法一和方法二是兩個·互逆思路,遍歷整個順序表,其時間複雜度為o(n
)o(n)
o(n)
,這兩個方法便於理解,方法三平均只需遍歷半個順序表,在效能上更優,但確定就是改變了原順序表元素的相對位置,對於無序要求的情況下,方法三時首選;
三種方法的空間複雜度均為o(1
)o(1)
o(1)
。
線性表刪除元素
時間限制 1 sec 記憶體限制 128 mb 提交 14 解決 13 提交 狀態 討論版 命題人 uzzoj 利用線性表順序儲存的動態儲存,實現建立線性表,以及刪除線性表中的某個元素 輸入包括 輸入元素個數,以及相應的線性表元素,以及要刪除的位置 輸出刪除後的線性表 5 1 2 3 4 5 31 ...
刪除相同元素 線性表
線性表 在乙個遞增有序的線性表中,有數值相同的元素存在。若儲存方式為單鏈表,設計演算法去掉數值相同的元素,使表中不再有重複的元素。輸入長度 6 輸入資料 2 3 4 5 5 7 2 3 4 5 7 68 9 10 11 22 22 8 9 10 11 22 include define null 0...
刪除相同元素 線性表
description 線性表 在乙個遞增有序的線性表中,有數值相同的元素存在。若儲存方式為單鏈表,設計演算法去掉數值相同的元素,使表中不再有重複的元素。input 輸入長度 6 輸入資料 2 3 4 5 5 7 output 2 3 4 5 7 sample input 68 9 10 11 22...