在任意位置插入資料
如下圖,假如我們要將一個資料val插入任意一個位置pos,我們就應該把原本放在這個位置以及它后面的資料全都往后移動,
假如我們要將資料val插入第三個(pos=3),我們就應該把原本放在第三個的數字及他后面的數字都向后移動,然后再將val放在第三個位置,而原本的3以及它后面的資料將依次移動到第四個位置第五個位置第六個位置以此類推知道所有的資料都移動完成后,再進行插入
1.檢查容量
2.平移資料
int end2 = s1->_size;
while (end2>pos) {
s1->_data[end2] = s1->_data[end2- 1];
–end2;
}
3.插入資料
4.資料數量加一

void seqlistinsert(seqlist*s1,int pos,sldatatype val) {
if (s1 == NULL )
return;
if (pos >= 0 && pos <= s1->_size) {
//檢查容量
seqlistcheckcapacity(s1);
//移動元素
int end2 = s1->_size;
while (end2>pos) {
s1->_data[end2] = s1->_data[end2- 1];
--end2;
}
//插入
s1->_data[pos] = val;
++s1->_size;
}
}
如果有什么不對的地方 歡迎大家提出意見 😁
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263003.html
標籤:其他
下一篇:ARM - Advanced SIMD register - quadword (128 bits wide) and doubleword (64 bits wide)
