前面我們學會了,順序表的移動問題。
刪除無非就是找到這個元素把他後面的移動到前面來,然後再個數減一就完成了。
所以呢,分三步.
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 ...