1. 程式人生 > 其它 >順序表-刪除所有元素值為x結點(另建表存放+複製到原表)

順序表-刪除所有元素值為x結點(另建表存放+複製到原表)

技術標籤:資料結構與演算法資料結構演算法

順序表的儲存結構:

typedef struct{
        int data[Maxsize];  //存在順序表中的元素
        int length; //存放順序表的長度
    }SqList;

分析:
這裡要刪除順序表的所有值為x的結點,跟單鏈表那題題意類似。

主要區別就是:儲存結構不同
這裡是順序儲存結構
單鏈表是鏈式儲存結構
所以解題方法也跟連結串列的不一樣。

這裡 :另建表存放不同+複製到原表

我們另建一個順序表L1,將 L中不為x的值放入L1,相等的不管,最後將L1複製到L中。

思路:
1.新建一個順序表L1,定義迴圈變數 i , 和記錄新建順序表的長度k.

2.通過for迴圈,再判斷,如果L.data[i] != x,則將元素複製到L1…data[k]。長度置為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; }