順序表之重用空間
阿新 • • 發佈:2018-12-18
題意:假設一個線性表採用順序表表示,設計一個演算法,刪除其中所有值等於x的元素,要求演算法的時間複雜度為O(n)、空間複雜度為O(1)。
設刪除L中所有值等於x元素後的順序表為L1,顯然L1包含在L中,為此重用L的空間。
演算法1:
void delnodel(SqList*&L,ElemType x) { int k=0,i; for(i=0;i<L→length;i++) if(L→data[i]!=x) { L→data[k]=L→data[i]; k++; } L→length=k; }
演算法2:
void delnode2(SqList*&L,ElemType x) { int k=0,i; while(i<L→length) { if(L→data[i]==x) { k++; else L→data[i-k]=L→data[i]; i++; } L→length=k; }