順序表-刪除所有元素值為x結點(另建表存放+複製到原表)
阿新 • • 發佈:2020-12-25
順序表的儲存結構:
typedef struct{
int data[Maxsize]; //存在順序表中的元素
int length; //存放順序表的長度
}SqList;
分析:
這裡要刪除順序表的所有值為x的結點,跟單鏈表那題題意類似。
主要區別就是:儲存結構不同
這裡是順序儲存結構
單鏈表是鏈式儲存結構
所以解題方法也跟連結串列的不一樣。
這裡 :另建表存放不同+複製到原表
我們另建一個順序表L1,將 L中不為x的值放入L1,相等的不管,最後將L1複製到L中。
思路:
1.新建一個順序表L1,定義迴圈變數 i , 和記錄新建順序表的長度k.
3.最後我們將新建的順序表複製到原順序表(L = L1),長度置為k
這裡是直接複製就可以了嗎?
不是的,這裡要通過迴圈一個一個複製過去
C程式碼實現:
void delall3(SqList & L,int X){
SqList & L1;
int i,k= 0;
for(i = 0; i < L.length;i++){
if(L.data[i] != x){
L1. data[K] = L.data[i];
k++;
}
}
L1.length = k;
//將L1複製到L中
for(i = 0; i < L1.length;i++){
L.data[K] = L1.data[i];
}
L.length= L1.length;
}