順序表刪除

2021-08-18 21:26:10 字數 1325 閱讀 3074

前面我們學會了,順序表的移動問題。

刪除無非就是找到這個元素把他後面的移動到前面來,然後再個數減一就完成了。    

所以呢,分三步.

1:找到元素​

架設乙個迴圈跑唄.設要刪除的元素為key,順序表長度為n。

for(i=0;i出了這個空迴圈,就有兩種可能,找到了和沒找到。(沒找到直接輸出沒找到就是了),

假設找到了.

2:移動後面的

for(j=i;ja[j]=a[j+1];

3:順序表個數減一​

n--;​

把上面的各個小部分綜合一下;具體**如下;

​/*設有資料集合data=,無序且無重複值,

目標:給定乙個關鍵字key,在data中刪除key*/

#include

int  delkey(int a,int n,int key)

return n;

}int main(void)

;scanf("%d",&key);

n=delkey(a,n,key);

for(i=0;iprintf("%5d",a[i]);

return 0;

}上面那個比較簡單,下面來乙個稍微的,

​/*設資料集合a=

資料元素含有重複值,要求刪掉3*/

#include

int  delkey(int a,int n,int key)

}return n;

}int main(void)

;scanf("%d",&key);

n=delkey(a,n,key);//普通刪除演算法 

for(i=0;iprintf("%5d",a[i]);

return 0;

}還有另外一種做法,和想法​

​//刪除要刪除的,就是留下要留下的. 

//刪除要刪除的,就是留下要留下的. 

//刪除要刪除的,就是留下要留下的. 

#include

int  delkey(int a,int n,int key)

return j;//最後順序表長度就是j。 

}int main(void)

;scanf("%d",&key);

n=delkey(a,n,key);//留下 

for(i=0;iprintf("%5d",a[i]);

return 0;

} 今天的**就分享到這裡,謝謝大家,我是小紙人。

順序表 插入刪除

插入操作 在順序表l的第i 1 i l.length 1 個位置插入新元素e。時間複雜的為o n 刪除操作 刪除順序表l的第i 1 i l.length 個位置的元素,並返回true。時間複雜度為o n include include define initsize 10 using namespa...

順序表的增加刪除

include define maxsize 10 void insertelem int sqlist,int len,int i,int x for t len t i 1 t sqlist i 1 x len len 1 void delelem int sqlist,int len,int ...

順序表查詢刪除遍歷

輸入格式 第一行輸入乙個正整數 m 1 m 100 代表一共有 m 個操作。接下來輸入 m 行,每行首先輸入乙個整數 t,分別代表以下操作 t 1,代表插入操作,輸入兩個整數 a 和 b 0 a,b 100 表示在 a 的位置上擦入元素 b,如果插入成功輸出success,否則輸出failed。t ...